Sorted based on the number of comments given to others' PRs, but also showing comments on own PRs and other comments given.
[This page was last updated on Oct 30 2020]
@daniellimws (195 comments)1 (commented on others PR)
Who dis
2 (commented on others PR)
I think it would be better to have
if (!csvFile.isFile()) {
// handle error
return null;
}
so that we don't have all the main logic inside an if-block.
3 (commented on others PR)
Over here output is instantiated in every iteration of the loop. Is this intended?
4 (commented on others PR)
Is it supposed to be split(",") instead?
5 (commented on others PR)
HAHA nice
6 (commented on others PR)
The To at the end of the method name feels unnecessary. Shall we use changeAttributes? Or editAttributes or edit which I think will match the user functionality more closely too.
7 (commented on others PR)
I think naming this method as addTask would be better as it is consistent with the other method names such as editTask and deleteTask.
8 (commented on others PR)
I think getTaskDescription would be a more descriptive name for this method?
9 (commented on others PR)
Consider renaming s and d to more descriptive names? Like cmd and details
10 (commented on others PR)
More descriptive names for t, u, and s?
11 (commented on others PR)
More descriptive names for t, u, and s?
12 (commented on others PR)
More descriptive names for t, u, and s?
13 (commented on others PR)
More descriptive names for t, u, and s?
14 (commented on others PR)
More descriptive names for t, u, and s?
15 (commented on others PR)
More descriptive names for t, u, and s?
16 (commented on others PR)
More descriptive names for t, u, and s?
17 (commented on others PR)
More descriptive names for t, u, and s?
18 (commented on others PR)
Why are these fields static? I also think they can just be private instead of protected.
19 (commented on others PR)
Why static?
20 (commented on others PR)
Same as above, consider private instead of protected static?
21 (commented on others PR)
Same as above, consider private instead of protected static?
22 (commented on others PR)
Same as above, consider private instead of protected static?
23 (commented on others PR)
Why you got a space after the ui. lol
24 (commented on others PR)
Same as above, consider private instead of protected static?
25 (commented on others PR)
We should refactor this part out since it is repeated like 10 times, but I think it is ok to do it after tomorrow's meeting.
26 (commented on others PR)
Moving lines 84,85 to right before line 116 here should fix the checkstyle error
Error: eckstyle] [ERROR] /home/runner/work/tp/tp/src/main/java/athena/Parser.java:84: Distance between variable 'name' declaration and its first usage is 6, but allowed 3. Consider making that variable final if you still need to store its value in advance (before method calls that might have side effects on the original value). [VariableDeclarationUsageDistance]
Error: eckstyle] [ERROR] /home/runner/work/tp/tp/src/main/java/athena/Parser.java:85: Distance between variable 'time' declaration and its first usage is 6, but allowed 3. Consider making that variable final if you still need to store its value in advance (before method calls that might have side effects on the original value). [VariableDeclarationUsageDistance]
27 (commented on others PR)
These 2 methods look like they are doing almost the same thing. Can we combine them together?
28 (commented on others PR)
Need an empty line before method definition.
Error: eckstyle] [ERROR] /home/runner/work/tp/tp/src/main/java/athena/ListCommand.java:17: 'METHOD_DEF' should be separated from previous statement. [EmptyLineSeparator]
29 (commented on others PR)
Need a space before taskDuration.
30 (commented on others PR)
Need a space before taskDuration.
31 (commented on others PR)
Need a space before taskDuration.
32 (commented on others PR)
Need a space before taskDuration.
33 (commented on others PR)
Prof said cannot using * to import. Refer to https://github.com/nus-cs2113-AY2021S1/forum/issues/36
34 (commented on others PR)
Error: eckstyle] [ERROR] /home/runner/work/tp/tp/src/main/java/athena/Ui.java:37: Line is longer than 120 characters (found 132). [LineLength]
35 (commented on others PR)
Error: eckstyle] [ERROR] /home/runner/work/tp/tp/src/main/java/athena/Ui.java:39:91: WhitespaceAround: '+' is not followed by whitespace. Empty blocks may only be represented as {} when not part of a multi-block statement (4.1.3) [WhitespaceAround]
36 (commented on others PR)
Error: eckstyle] [ERROR] /home/runner/work/tp/tp/src/main/java/athena/Ui.java:63: First sentence of Javadoc is missing an ending period. [SummaryJavadoc]
37 (commented on others PR)
Error: eckstyle] [ERROR] /home/runner/work/tp/tp/src/main/java/athena/Ui.java:75: Line is longer than 120 characters (found 127). [LineLength]
38 (commented on others PR)
We should put these things in our JUnit tests. I think it's ok if you want to do it in a different pull request.
39 (commented on others PR)
Code here is the same as lines 15-17. We can do this(taskList) to avoid repetition.
40 (commented on others PR)
Space between =.
41 (commented on others PR)
Space between =.
42 (commented on others PR)
Just a nitpick: counter++ can ignore if you don't care lol
43 (commented on others PR)
Repeated code. Can do addTask(name, startTime, duration, deadline, recurrence, importance, notes, index).
44 (commented on others PR)
Would be nice to make this a test case.
45 (commented on others PR)
Would be nice to make this a test case.
46 (commented on others PR)
Wouldn't the index that we assign be different from its index in the list? tasks.remove(task) instead?
47 (commented on others PR)
Adding this parameter will cause the program to not compile. We can leave out this parameter for now.
48 (commented on others PR)
execute has void return-type, doesn't return anything
Should be deleteCommand instead of DeleteCommand
49 (commented on others PR)
ui needs to be instantiated otherwise it will crash when execute tries to run it.
50 (commented on others PR)
Currently we don't return the printed message as a string so I think we can leave this line out for now. We should later think about how we want to return the printed string for testing purposes.
51 (commented on others PR)
Both tasks here are assigned the same index.
52 (commented on others PR)
deleteCommand.execute will call ui.printTaskDeleted, but ui is null so it will crash.
53 (commented on others PR)
taskFilter should now be importanceFilter
54 (commented on others PR)
Continuing the comment in TaskList about getFilteredList(TaskFilter taskFilter), we can do getFilteredList(importanceFilter).getFilteredList(forecastFilter).
55 (commented on others PR)
We can just do return true here. But I think this is fine too.
56 (commented on others PR)
I think we don't need to add another ForecastFilter parameter because ForecastFilter is a subclass of TaskFilter. In the Timetable class I elaborated on how this can be used.
With this, it will be possible to use any type of filters as we add more in the future (for example minus importance filter).
57 (commented on others PR)
Was this for your own testing?
58 (commented on others PR)
I think it is more sustainable to generate a date for this test case.
59 (commented on others PR)
I think it is more sustainable to generate a date for this test case.
60 (commented on others PR)
We should generate a date for this test case.
61 (commented on others PR)
lol got this here
62 (commented on others PR)
We should remove these commented code since we are not using it anymore. If we wanna refer back we can find the old version here on GitHub.
63 (commented on others PR)
We shouldn't instantiate the Scanner in every iteration of the loop. From experience this causes problems with the IO redirection tests.
64 (commented on others PR)
taskList would be a better name than oldTask, I believe?
65 (commented on others PR)
reccurence spelt wrongly lol
66 (commented on others PR)
I think we can change Objects.equals(taskForecast, that.taskForecast) to taskForecast == that.taskForecast since we use the enum now instead of a String.
67 (commented on others PR)
Yea I think something like getTask would be nicer. Also there should be a JavaDoc comment.
68 (commented on others PR)
Lowercase L in List?
69 (commented on others PR)
will still execute in a default way.
How about will execute using the default values for each parameter?
70 (commented on others PR)
the name of the task instead of Name of the task? And same for the other parameters.
71 (commented on others PR)
printed with an index
How about printed with a number because index sounds a bit like jargon?
72 (commented on others PR)
the name of the task instead of Name? And same for the other parameters.
73 (commented on others PR)
Unnecessary empty lines
74 (commented on others PR)
Unnecessary empty line
75 (commented on others PR)
Empty lines
76 (commented on others PR)
Empty lines
77 (commented on others PR)
It would be better override equals in TaskList instead
78 (commented on others PR)
Empty lines
79 (commented on others PR)
Remember to add these files to the .gitignore
80 (commented on others PR)
I think expected vs actual would be a more consistent naming since this was used for our IO tests. But this is fine too.
Other than that, since this is a BufferedReader object, it would be nice to have the variable name sound like it, for example answerFileReader or expectedFileReader? Same goes for attempt in this method.
81 (commented on others PR)
else is not needed since this will always be reached when the if condition is not satisfied.
82 (commented on others PR)
This shouldn't throw an AddException. Maybe a CommandException?
83 (commented on others PR)
getErrorMessage gives an impression that it is returning something. Perhaps printErrorMessage instead? Or return the error message as a string from this?
84 (commented on others PR)
Also remember to add Javadoc comments for this
85 (commented on others PR)
1 empty line should be enough?
86 (commented on others PR)
I feel that it would be better to have a more specific exception name.
87 (commented on others PR)
I feel that it would be better to have a more specific exception name.
88 (commented on others PR)
It is not clear what toggle does.
89 (commented on others PR)
Can we use TaskList instead? So that we can make use of methods from TaskList if needed.
90 (commented on others PR)
Can we call this TimeAllocator? A noun instead of a verb since it's an object.
91 (commented on others PR)
Ui the i is lowercase in our code.
92 (commented on others PR)
isFlexible according to coding standards
93 (commented on others PR)
isFlexible
94 (commented on others PR)
isFlexible
95 (commented on others PR)
isFlexible
96 (commented on others PR)
isTaskFlexible?
97 (commented on others PR)
isFlexible?
98 (commented on others PR)
isFlexible? The program still works when there is a method called isFlexible
99 (commented on others PR)
isFlexible?
100 (commented on others PR)
How about something like loadTaskListData_commaInTaskAttribute_commaIsReplaced so that it is more descriptive?
101 (commented on others PR)
and I think it is good enough to use "TODAY" instead of Recurrence.TODAY.toString()
102 (commented on others PR)
What does 5 refer to?
103 (commented on others PR)
I think it is better to override the clone method that is in Object.
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
104 (commented on others PR)
getDatesAt instead? Date in plural.
Also, should we be using getTaskFromNumber instead?
105 (commented on others PR)
getFirstDay is not so clear. Perhaps getFirstDateMatchingDay? Or something more clear?
106 (commented on others PR)
I think you can just do recurrenceDates.clear()
107 (commented on others PR)
removeDate instead?
108 (commented on others PR)
"dd-MM".length() instead? DATE_TIME_FORMAT sounds quite confusing.
109 (commented on others PR)
I suppose we should use the next year if the date has already passed. For example 1 Jan should be in year 2021.
110 (commented on others PR)
Unused import?
111 (commented on others PR)
I think can use task.isFlexible() here, which has clearer intention than task.getDates() == null.
112 (commented on others PR)
Can this be isDateIncluded instead?
113 (commented on others PR)
I think filterDates is not very clear. How about something like removeExcludedDates?
114 (commented on others PR)
The isFlexible attribute of this class is to determine whether to get flexible tasks or not flexible tasks. So, this needs to be task.isFlexible() ^ isFlexible. But anyways I think isFlexible is not very clear. How about something like filterFlexibleTask or doesIncludeFlexibleTask
115 (commented on others PR)
Change to isDateIncluded too?
116 (commented on others PR)
Remember to remove this because it's no longer used.
117 (commented on others PR)
I think it is unclear to say today, since today means only TODAY in our program? Something likethisDayOfWeek instead?
118 (commented on others PR)
Same as above for today.
119 (commented on others PR)
Slight nit: testRemove instead of testremove.
I also think day could be more descriptive, so that from the name we can tell what the test case is testing. How about filterToday or something that shows it is testing for filtering based on TODAY?
Also the method doesn't return true so this is not very precise. How about returnsOnlyTodayDate?
Same goes for the methods below.
120 (commented on others PR)
Is this supposed to be Forecast.WEEK instead, according to the comment?
121 (commented on others PR)
Unused method? It doesn't seem to do exactly as the method name suggests too.
122 (commented on others PR)
Also remember to add a test for the exception.
123 (commented on others PR)
I think toStringDetails sounds weird. How about getDetails() or getDetailsAsString()?
124 (commented on others PR)
How about the name taskDetails instead of task? Because we always use task for Task objects.
125 (commented on others PR)
I think we should refactor this into another method.
126 (commented on others PR)
Should commandAndDetails just be commandType?
127 (commented on others PR)
parsedCorrectly should start with lowercase
128 (commented on others PR)
lowercase parsedCorrectly
129 (commented on others PR)
I think if the user inputs l3 f/WEEK, the shortcut won't be expanded, and then the command will fail. I think parseCommandType and parseShortcutCommand can be combined together since they look at the first word in the command.
130 (commented on others PR)
Need a space after the * for them to show as bullet points.
131 (commented on others PR)
Oh since we're not using it anymore let's remove it.
132 (commented on others PR)
Allocator should start with lowercase a
133 (commented on others PR)
Why does this throw an Exception?
134 (commented on others PR)
Since this is a class/object I think it would be better to name it with a noun. Something like TaskTimeComparator? I think that this also helps us immediately tell that it is a comparator when looking at the name.
135 (commented on others PR)
Was this for testing?
136 (commented on others PR)
Missed this out last time. Since fixedTask and flexibleTask are lists, their name should be in plural form as per the coding standards (fixedTasks and flexibleTasks).
137 (commented on others PR)
After #131 it will be in LogicManager.
138 (commented on others PR)
Lol you forgot to finish? Or we continue this next time?
139 (commented on others PR)
Strictly speaking this shouldn't be part of this PR. But this is good.
140 (commented on others PR)
the best theoretical timetable...
I feel that theoretical will raise some questions from the reader (aka Aileen). I think we can remove this word.
141 (commented on others PR)
Wanna give example commands?
142 (commented on others PR)
theoretical same as other comment
143 (commented on others PR)
It splits the user input based on command type...
based on the command type instead of based on command type?
Just a suggestion: I think it is easier to read if we say "the user can provide the parameters in any order" in a separate sentence.
144 (commented on others PR)
I think it is not clear what It refers to. How about mentioning Parser, AddCommand and TaskList.
145 (commented on others PR)
calls the
AddCommandclass
"creates an AddCommand object" would be more precise?
146 (commented on others PR)
Writes the current task into...
Should be "Writes the current task list into"?
147 (commented on others PR)
The input will be parsed into
LogicManager
passed instead of parsed?
which executes the
AddCommandclass
creates an AddCommand object would be more precise
148 (commented on others PR)
returns a boolean value "false" to the active flag
I think false can be written like false because it is code.
And we got an active flag?
149 (commented on others PR)
What are these?
150 (commented on others PR)
I think we should name it as something that sounds like a Comparator, or at least a noun. Something like TaskImportanceComparator?
151 (commented on others PR)
Similar to the other comparator, something like TaskTimeComparator?
152 (commented on others PR)
How about
if (taskFilter instanceof ForecastFilter) {
...
}
else {
filteredTasks.add(task);
}
since the other filters don't need to do anything.
153 (commented on others PR)
Unused import?
154 (commented on others PR)
flexibleTaskList and fixedTaskList since they are tasklists?
155 (commented on others PR)
Is this used?
156 (commented on others PR)
Can use assertEquals
157 (commented on others PR)
This sounds like it's for setting today's date. But I think the intention here is to change the date that is to be filtered? I think we should make a new Forecast value for this purpose instead of reusing TODAY because it can be quite confusing. In that case, I find filterDate to be clearer than todayDate too.
158 (commented on others PR)
I realized that when the Forecast is DAY then it must have a date. So, it would be good to have it part of the constructor. How about having a second constructor that takes in a LocalDate, which sets the forecast to be Forecast.DAY.
159 (commented on others PR)
Remember to remove this.
160 (commented on others PR)
Shouldn't it be timeInfo.getStartTime().getHour() in the set? Otherwise the loop seems to be pointless.
161 (commented on others PR)
It would be good to refactor this code segment into methods to maintain single level of abstraction.
162 (commented on others PR)
nit: int duration instead of Integer span to keep things consistent, since we normally use int for integers?
163 (commented on others PR)
temp as an argument name/being part of a method name is probably not a very good idea
164 (commented on others PR)
Remember to remove
165 (commented on others PR)
Why can't we just remove the task right here?
166 (commented on others PR)
Would be good to refactor this segment to maintain a single level of abstraction.
167 (commented on others PR)
Suggestion: Can do undefinedTimeTasks.isEmpty()
168 (commented on others PR)
I think it would be good to make a variable for end - space - pos otherwise it takes some brain power to know what this part does exactly.
169 (commented on others PR)
I thought that count would need to start at the starting hour that temp started at?
170 (commented on others PR)
Would be good to refactor this part into methods to maintain single level of abstraction.
171 (commented on others PR)
Is this supposed to throw a TaskNotFoundException? If this throws a TaskNotFoundException, the user will receive an error message saying the task cannot be found. I think this would be really confusing to the user.
172 (commented on others PR)
How about something like spaceSlots instead of temp?
173 (commented on others PR)
I think date is only meaningful when forecast == Forecast.DAY so it might be better that we don't accept a forecast argument.
174 (commented on others PR)
Is it supposed to be day > 31?
175 (commented on others PR)
Suggestion: How about nextVacantSlotStart or something that indicates that this finds the start of the next vacant time slot?
176 (commented on others PR)
Suggestion: How about nextVacantSlotEnd or something that indicates that this finds the end of the next vacant time slot?
177 (commented on others PR)
Remember to remove.
178 (commented on others PR)
I think it would be better to say that this method will store the tasks that did not get assigned yet into this parameter. Otherwise, it seems like the caller has to provide said tasks.
179 (commented on others PR)
Suggestion: active doesn't clearly describe why the loop has to continue running, a name that describes so would be nice
180 (commented on others PR)
taskNumber from line 161 is unused.
181 (commented on others PR)
I think that for this one, it would be good to catch the InvalidCommandException, to ensure it is this specific exception that is being thrown.
182 (commented on others PR)
I believe the test should fail if the this part fails, so we shouldn't catch and handle this exception.
183 (commented on others PR)
I believe the test should fail if the this part fails, so we shouldn't catch and handle this exception.
184 (commented on others PR)
I don't think we should print the stack trace to the user at all (as done by e.printStackTrace()) no matter what happens. We should give an error message saying the program failed to load the file. Perhaps we could make our own exception like StorageLoadFailedException so that we can customize its behaviour too?
Actually, I realized ui.printInvalidTask is ambiguous to the user too. The user wouldn't know which task is disposed and this is not really a good thing. I think it would be good to change this in this PR too.
Also it is not immediately obvious that ArrayIndexOutOfBoundsException occurs when the save file is corrupted. Perhaps we should catch this exception in Storage and throw a custom exception like StorageCorruptedException.
185 (commented on others PR)
StorageException instead?
186 (commented on others PR)
Why so many empty lines?
187 (commented on others PR)
This should be a heading?
188 (commented on others PR)
Got an extra space in front of TaskList
189 (commented on others PR)
Suddenly there is a getLog that came out of nowhere. Would be good to explain it.
190 (commented on others PR)
Full stop at the end
191 (commented on others PR)
Do we need to check the existing tasks?
192 (commented on others PR)
Shouldn't existing tasks not go past the 12am mark? Wouldn't we have stopped that from happening when it was added/edited?
193 (commented on others PR)
Unused constant?
194 (commented on others PR)
test?
195 (commented on others PR)
If we do getDayOfWeek means it will occur every week right? Should it be just LocalDate.now()? Btw if we want to get the string representation of a LocalDate, remember to use DateUtils.formatDate because toString doesn't return the same format as what we mention in our user guide. This could also be a reason why we get the error message I don't know the date..., because I realized this kept getting printed in the tests when we use date.toString.
196 (commented on own PR)
@alstontham I think it would be good to overload the toString method so that we can print the object directly. You can work on printing out a Date and TaskList on your side first then we can move that code here later.
Or you can fetch this branch and modify it, then make a pull request to my branch.
197 (commented on own PR)
Yea I tried without and the program might crash if the user doesn't give it in upper case.
198 (commented on own PR)
I agree!
199 (commented on own PR)
Oh wait, one allows the programmer to choose the index while the other will automatically assign an index. But yea there's repeated code so I'll modify the second addTask to call the first addTask.
200 (commented on own PR)
Actually I wasn't sure should the number start from 0 or 1. I thought our first task would start from 1?
201 (commented on own PR)
This was taken from #55. Can you comment over there?
202 (commented on own PR)
How about moving number to the first argument for addTask as well?
203 (commented on own PR)
Oops thanks for noticing
204 (commented on own PR)
Oops thanks for noticing
205 (commented on own PR)
Oh right good catch
206 (commented on own PR)
I removed the runtest.sh from GitHub actions in 732c687 because I realized this is not practical.
207 (commented on own PR)
Oh I was planning to refactor ------- into a constant. Will do that tomorrow.
208 (commented on own PR)
It turns out that the one in 115 was looking for the first date that matches the day, e.g. given Wednesday return 21 Oct 2020. So it's different from this. But yea I agree it would be better for this to be somewhere else, so that it can also be commonly used by the date related tests.
209 (commented on own PR)
Nope since the checks passed
210 (commented on own PR)
At first I was thinking of putting it in Ui, and then I feel that eventually we would need to refactor them to somewhere more focussed. Then I realized the somewhere is Timetable, since it contains all the related attributes needed to draw the timetable. What do you think?
211 (commented on own PR)
Ok will leave this to you
212 (commented on own PR)
Oh thanks I forgot about that.
213 (commented on own PR)
@wish2023 Can check if the yyyy-MM-dd was a mistake?
214 (other comment)
Done in #4
215 (other comment)
Done in #4
216 (other comment)
Done in #4
217 (other comment)
@Kafcis I think we don't need to store the timetable generated from the task list in a file, because the same timetable can always be generated from the same task list. Looking at the scale of this, there won't be much impact in performance if we generate the timetable when the program starts. But if you wanna do it, you can use getTimetable() to get the week's timetable.
@alstontham The timetable given to the Ui will be a list of TimetableDay objects, each containing a date and a list of Tasks. So you can work on printing that now.
218 (other comment)
Can you add a method to get the whole list without any filtering?
219 (other comment)
Actually there's no checkstyle issues here lol
220 (other comment)
I feel that this can be just a method inside Task. Have we discussed this?
221 (other comment)
Done in #34
222 (other comment)
Er this PR has error with checkstyle test after you merged master into it. We shouldn't have merged.
223 (other comment)
Yea if main throws the exception it's the same as asking the program to crash because nobody is handling it.
224 (other comment)
Done in #45
225 (other comment)
Btw merge from master so that the checkstyle problems are fixed.
226 (other comment)
Thanks. I agree it would be better to have a Recurrence class so that we can support different types of values.
227 (other comment)
Also continuing the work in #59.
228 (other comment)
I just tested and realized sending exit doesn't actually exit the program. You forgot to check for that.
229 (other comment)
Continued in #61
230 (other comment)
I merged #55 into this so that I can also catch exceptions. We can wait until that is merged before reviewing this if there are too many things.
231 (other comment)
I think each change in the code should be accompanied with the test code so that we can merge with confidence that it works as intended.
232 (other comment)
My bad now it is fine, not sure why it crashed just now. I should have checked what went wrong exactly.
233 (other comment)
I think this would fix #73. Can confirm?
234 (other comment)
Left with AddCommand
235 (other comment)
Test is failing because of ForecastFilterTest. Should be ok once #78 is merged.
236 (other comment)
Done in #79
237 (other comment)
Also closes #69
238 (other comment)
@wish2023 ForecastFilterTest dieded again
239 (other comment)
We should eventually get rid of this sloppy exception handling.
240 (other comment)
Did we fix this?
241 (other comment)
There would be a problem when the task details contains a |. I think commareplacement is too long if we want the save file to be conveniently edited by the user.
242 (other comment)
Fix #98
243 (other comment)
@wish2023 I'm thinking of merging this first so that we can move on with the other PRs. Will open another issue to address the comments you left. Ok?
244 (other comment)
We should also test that 7 days in the week (Monday to Sunday) are included when filtering by week. And address the comments left in #99.
245 (other comment)
Can we close this? Done in #114
246 (other comment)
No longer a problem
247 (other comment)
Can close? Done in #96
248 (other comment)
Some work done in #96 and #115
249 (other comment)
Can be done together with #103
250 (other comment)
Remember to fix the failing test too.
251 (other comment)
This is done already?
252 (other comment)
Good catch. Currently if there are overlapping tasks, the second task will not show up in the timetable. I think we should leave this to the TaskList and TimeAllocator to ensure this doesn't happen? Because I don't think we should allow this to happen at all.
253 (other comment)
Btw for now, if the task duration exceeds the sleep time, it will be cut off at the sleep time. Perhaps we should push back the sleep time when this happens? We can open an issue for this if so.
254 (other comment)
Ya it shows for the week for now. After this is merged I will let it be based on the ForecastFilter (#129).
255 (other comment)
We might need to postpone to v2.1 because our OOP is not really good enough to allow us to store this information anywhere, since our Timetable is instantiated on the spot when list is called. We would need a Model class that interfaces to all our backend stuff like TaskList and Timetable before implementing this.
256 (other comment)
Now we cannot do this because we are loading the Task attributes from the TaskList and filling them into the EditCommand. We can change Task.edit to instead check if the method arguments are null, and only modify the Task attributes if they are not null. By doing this, we can improve testability since EditCommand no longer needs to load the attributes from a Task.
257 (other comment)
Resolved in #142
258 (other comment)
In DG it says ColourManager but in code we have Color.
259 (other comment)
Oh ok no prob
260 (other comment)
Don't allow user to add tasks from 12am to 8am.
261 (other comment)
Where are the diagrams lol? This PR only has the code for generating them.
262 (other comment)
Combination of #169 #177
263 (other comment)
Done in #178
264 (other comment)
Done in #178
265 (other comment)
Is this fixed?
@hughjazzman (164 comments)1 (commented on others PR)
public Resistor(double value) {
2 (commented on others PR)
/**
* Returns String representation of Resistor.
*
* @return String with value and SI unit of Resistor.
*/
3 (commented on others PR)
public String toString() {
4 (commented on others PR)
Great photo!
5 (commented on others PR)
Nice work!
6 (commented on others PR)
If you look in the build error, it says 'METHOD_DEF' should be separated from previous statement. [EmptyLineSeparator]. So just have to add an empty line.
/**
7 (commented on others PR)
Consider correcting the SI_UNIT?
private static final String SI_UNIT = "Ω";
8 (commented on others PR)
Need to extend the super class.
public class PowerSource extends Component {
9 (commented on others PR)
The JavaDoc should be with its method.
/**
* Returns String constituting value and unit of voltage source of circuit.
*
* @return String representation of VoltageSource object.
*/
10 (commented on others PR)
Consider JavaDoc here?
11 (commented on others PR)
Might be good to have getters for these.
12 (commented on others PR)
Later when the RTemplate is created this could instead inherit from that.
13 (commented on others PR)
Same, a getter for this could be used later?
14 (commented on others PR)
Consider moving the static constant to before the instance variables?
https://se-education.org/guides/conventions/java/index.html#classes-and-interfaces
15 (commented on others PR)
Not needed since done in super() call.
16 (commented on others PR)
Consider removing the line between the JavaDoc and method? From the coding standard: https://se-education.org/guides/conventions/java/basic.html#comments
No blank line between the documentation block and the method/class
17 (commented on others PR)
18 (commented on others PR)
19 (commented on others PR)
Could consider having setters for these? @sevenseasofbri LrTemplate could use them as well?
20 (commented on others PR)
Can also add JavaDoc.
public double getImpedance() {
return angularFrequency * Math.abs(inductor.getValue() - (1 / capacitor.getValue()));
}
21 (commented on others PR)
You could consider to just return here and let the rest of the function get carried out instead of having else.
ui.printSetVoltageSource(template.getInitialPowerSupply());
return;
22 (commented on others PR)
Because of inheritance this is not needed.
23 (commented on others PR)
Maybe the assertion could be not throwing an exception? This would probably be better checked in the test for the LcTemplate.
assertDoesNotThrow();
24 (commented on others PR)
Ah ya that's what I meant.
25 (commented on others PR)
With the return, no need for the else here actually. So it can just be done after the first if statement.
26 (commented on others PR)
Consider updating the method name to be more specific? Like https://se-education.org/guides/conventions/java/basic.html#naming
featureUnderTest_testScenario_expectedBehavior()
Also can consider adding edge cases? Like 0 or negative values to make the tests more robust?
27 (commented on others PR)
Perhaps the addSeries() and addParallel() methods could be tested as well? They are specific to the LoadComponent subclasses.
28 (commented on others PR)
Oh that's a good point. No need to put them here then, you can just add test cases to LoadComponentTest?
29 (commented on others PR)
Could else throw new DukeException then?
30 (commented on others PR)
Yep looks good!
31 (commented on others PR)
Since execute() actually takes in a Ui object, you can consider using Ui.readline() instead.
32 (commented on others PR)
command = ui.readLine();
33 (commented on others PR)
Consider leaving System.out.println() in the Ui class?
34 (commented on others PR)
Consider leaving this in the Ui class?
35 (commented on others PR)
The help and summary command should probably have text-ui-test before merging.
36 (commented on others PR)
Oh this try-catch block is probably not needed since all DukeException are caught in the main Duke class right?
37 (commented on others PR)
Alright noted then, it's like a mini instance of Duke.
38 (commented on others PR)
}
if (numOfCommandsDone >= 6 || !command.matches(orderOfInstructions[numOfCommandsDone] + "(.*)")) {
throw new DukeException("Bad Command! Please follow the instructions carefully."
+ "If you want to exit this mode, type 'exit' and press enter.");
}
Command c = PARSER.parse(command);
c.execute(ui);
numOfCommandsDone++;
39 (commented on others PR)
What's the reasoning for making this (as well as in the other classes) protected instead of private?
40 (commented on others PR)
Probably don't want to XOR here right?
public static final double DELTA = 1e-15;
41 (commented on others PR)
Thinking the return toString methods could simply be tested in text-ui-test. Kind of odd that we just copy paste for JUnit.
42 (commented on others PR)
Consider changing all method names to include the test input/scenario.
https://se-education.org/guides/conventions/java/basic.html#naming
43 (commented on others PR)
Consider adding edge cases? Like 0, or negative values, to make the code more robust - similar for all the methods.
44 (commented on others PR)
i.e. test scenario here could be noValue
45 (commented on others PR)
Ah okay, but I would say there is no need to access the TEMPLATE (see comment about the toString), and the components could be accessed by getters instead, so actually don't need to be protected?
46 (commented on others PR)
Trivial getters wouldn't really need testing in the end: https://stackoverflow.com/questions/6197370/should-unit-tests-be-written-for-getter-and-setters
47 (commented on others PR)
Since the way we set values is calling Component.setValue(), these actually still work when they are final.
48 (commented on others PR)
In a sense, we are using the same LoadComponent object, just changing its value.
49 (commented on others PR)
Looking at https://github.com/se-edu/addressbook-level3/blob/master/src/main/java/seedu/address/logic/LogicManager.java, I think it is completely fine to have the Logger at the main Command class. It's just that we haven't thought of logging for the other commands, but I think this should be moved to the main class.
50 (commented on others PR)
Nice use of abstract!
51 (commented on others PR)
Any reason why the @param input here is of byte type when everything else is int? Including that of TwoInputGate.setSecondInput().
52 (commented on others PR)
Probably clear enough to return immediately.
return input & secondInput;
53 (commented on others PR)
Should this check for isEmpty() first?
54 (commented on others PR)
Nice example!
55 (commented on others PR)
boolean hasNoChildren = isNullAtIndex(getLeftIndex(index)) && isNullAtIndex(getRightIndex(index));
return !isNullAtIndex(index) && hasNoChildren;
56 (commented on others PR)
4 could be a constant defined above.
57 (commented on others PR)
I don't think we need that. Reason being we are not guaranteed the inputs are set when building the circuit. Might have to calculate every time, unless BooleanTemplate checks for if a new value is set or not.
Any Gate would also need a default overloaded constructor in that case.
58 (commented on others PR)
Do remove the conflict markers.
59 (commented on others PR)
No need to remove.
60 (commented on others PR)
No need to remove.
61 (commented on others PR)
No need to remove.
62 (commented on others PR)
No need to remove.
63 (commented on others PR)
You feel that no need to put the User Profile and Value Proposition to the ToC?
64 (commented on others PR)
Consider using bullet points here? Possibly standardise the numbering/bulleting in this Appendix section?
65 (commented on others PR)
Nice diagram!
66 (commented on others PR)

67 (commented on others PR)
`BooleanTemplate` uses this function to render the current configuration of the circuit in a String format. The method
is also extensively used in other internal operations in `BinaryTree<t cwf="C:\repos\nus-cs2103\dashboards-base\contents\cs2113\tp-comments-panels.mbdf">` for checking whether a position in the tree has been set or not.
68 (commented on others PR)
Just realised this shouldn't have been deleted.
69 (commented on others PR)
Should be
## Appendix: Requirements
### Product scope
#### Target user profile
70 (commented on others PR)
This has been changed to CLIrcuit Assistant right?
71 (commented on others PR)
Is this a copy of the main README?
72 (commented on others PR)
Currently broken.
## Appendix: Requirements
73 (commented on others PR)
The jar file is still duke.jar.
2. Open a new terminal window and navigate to the same directory where your duke.jar is located
3. Enter the command `java -jar duke.jar` into the terminal window to launch the application
74 (commented on others PR)
Just the link for changes in #73.
* [Model component](#model-component)
* [Implementation of Boolean Commands](#implementation-of-boolean-commands)
* [Binary Tree](#binary-tree)
75 (commented on others PR)
[-> AddCommand: execute()
76 (commented on others PR)
RcTemplate calls getCapacitor() from itself.
RcTemplate -> RcTemplate : getCapacitor()
activate RcTemplate
RcTemplate <- RcTemplate : capacitor
deactivate RcTemplate
77 (commented on others PR)
AddCommand -> RcTemplate : rc.getComponent("c")
78 (commented on others PR)
I realise that we might need to change the actual Java code here so it doesn't need to call getComponent() twice.
79 (commented on others PR)
This whole part might actually be redundant in the code, we can remove the setComponent() call since it is already set when c.setValue() is called.
80 (commented on others PR)
I think you can just update the UML to this version, we can merge and create a new PR for the code later. Maybe can just add an issue right after merging this one.
81 (commented on others PR)
Yeah maybe can add to .gitignore.
82 (commented on others PR)
The code has been fixed as of #71 - you can update it to follow the current implementation.
83 (commented on others PR)
You can click delete file from the Files changed section.
84 (commented on others PR)
This would probably be better moved to its own section rather than being in the Architecture section.
85 (commented on others PR)
I'll have to update my diagram.
86 (commented on others PR)
Remember to update the ToC once you do so 💯
87 (commented on others PR)
/.settings/
*.log*
88 (commented on others PR)
Interface with only a constant?
89 (commented on others PR)
Why is this needed?
90 (commented on others PR)
Duplicate
91 (commented on others PR)
Should not be invalid command, need to change input.txt to use tutorial circuit instead.
92 (commented on others PR)
Maybe can add JavaDoc here?
93 (commented on others PR)
I see, will have to change the class diagrams for this.
94 (commented on others PR)
Why is this necessary? Doesn't seem to be used outside of checkHasSetBothInput().
95 (commented on others PR)
JavaDoc here?
96 (commented on others PR)
Following CircuitCommand, what could be done instead is to put this in an overridden toString() method:
}
@Override
public String toString() {
return "The output of the current configuration is " + template.calculateOutput(0) + ".\n" + super.toString();
}
Better yet, have a private int output variable in the class, and use .execute() to set it using output = template.calculateOutput(0). Then you could replace it with output in toString().
97 (commented on others PR)
Yep can remove.
98 (commented on others PR)
This is no longer necessary, along with the import.
99 (commented on others PR)
Consider initializing the Gate object before these if checks? Seems to be circuit.getT(idx) is accessed up to 3 times.
100 (commented on others PR)
This could be overloaded so that calculateOutput() will just give calculateOutput(0) when called from CalculateBooleanCommand. Then this method could also be private.
101 (commented on others PR)
No new Gate object is being created, you are accessing an existing one within BinaryTree. Plus you get much more clarity.
102 (commented on others PR)
On that note, you could also have a variable for the left and right index.
103 (commented on others PR)
return super.toString() + System.lineSeparator() + "The output of the current configuration is " + output + ".";
104 (commented on others PR)
Following the implementation this should above the template.
105 (commented on others PR)
Nice addition! 💯
106 (commented on others PR)
Any reason why this doesn't use the CLIrcuit Assistant logo? And Enjoy being on the same line? Consider using EXPECTED.txt and ACTUAL.txt, which you'll have to update, to check the formatting.
107 (commented on others PR)
Adding on to this, how come there are two sets of DukeException being thrown?
108 (commented on others PR)
Consider putting this in CircuitTemplate instead? Then subclasses can just call super.toString().
109 (commented on others PR)
Will be updated by @oasisbeatle
110 (commented on others PR)
👍
111 (commented on others PR)
112 (commented on others PR)
+-----------+----------------------------+---------------------+
| Command | Circuit | Boolean |
+-----------+----------------------------+---------------------+
| Tutorial | tutorial circuit | tutorial boolean |
| Template | template TEMPLATE | template TEMPLATE |
| Summary | summary | summary |
| Set | set COMPONENT VALUE | set INPUT BOOLVALUE |
| Add | add CONFIG COMPONENT VALUE | add INPUT GATE |
| Calculate | calc EFF_VALUE | calc |
| Exit | exit | exit |
| Print | print | print |
+-----------+----------------------------+---------------------+
Here's a summary of the command parameters:
+-----------+----------------------------------+-------------------------------+
| Parameter | Circuit Params | Boolean Params |
+-----------+----------------------------------+-------------------------------+
| TEMPLATE | rc, rl, r, cl | boolean |
| COMPONENT | r, c, l, v | N.A. |
| CONFIG | parallel, series | N.A |
| EFF_VALUE | reff, ceff, leff, current, power | N.A |
| VALUE | any number of double datatype | N.A |
| INPUT | N.A | A, B, C, D, E, F, G |
| GATE | N.A | or, and, nor, nand, xor, xnor |
| BOOLVALUE | N.A | 0, 1 |
+-----------+----------------------------------+-------------------------------+
113 (commented on others PR)
You have exited Tutorial Mode!
Here's a summary of available commands:
114 (commented on others PR)
115 (commented on others PR)
Why are the stars added?
116 (commented on others PR)
Do correct the name of the image file.
117 (commented on others PR)
#### `SetBooleanCommand`
118 (commented on others PR)
There are four Boolean commands that are used in the implementation of the logic gates: `TemplateBooleanCommand, SetBooleanCommand, AddBooleanCommand`, and `CalcBooleanCommand`.
119 (commented on others PR)
#### `AddBooleanCommand`
120 (commented on others PR)
#### `CalcBooleanCommand`
121 (commented on others PR)
Where is the PUML file for this? It seems like the TwoInputGate objects shouldn't know about it each other, rather it's BooleanTemplate that knows about all of them.
122 (commented on others PR)
Missing PUML file.
123 (commented on others PR)
Missing PUML file.
124 (commented on others PR)
Missing PUML file.
125 (commented on others PR)
Missing PUML file.
126 (commented on others PR)
127 (commented on others PR)
Going into BooleanParser from Parser should be prepareBooleanTemplate().
[->Parser: parse("template and")
activate Parser
Parser-> BooleanParser: prepareBooleanTemplate("and")
128 (commented on others PR)
BooleanParser --> BooleanParser: AndGate()
129 (commented on others PR)
BooleanParser --> BooleanParser: BooleanTemplate(AndGate())
130 (commented on others PR)
131 (commented on others PR)
The BooleanParser is not deactivated.
132 (commented on others PR)
The control should be returned back to Parser, that's where it started from. We can just ignore the super() call, it's not so important.
TemplateBooleanCommand --> BooleanParser
deactivate TemplateBooleanCommand
BooleanParser --> Parser
deactivate BooleanParser
[>-- Parser
deactivate Parser
133 (commented on others PR)
This is still not fixed. Do change the name of the image file to SetBooleanCommand.png.
134 (commented on others PR)
Do keep in mind the names of the image files.

135 (commented on others PR)
Please fix the activations, they should all be after the arrow ->.
136 (commented on others PR)
Index parsing is done in BooleanParser.
137 (commented on others PR)
BooleanTemplate -> BinaryTree : insert(idx, and)
activate BinaryTree
BinaryTree --> BooleanTemplate
deactivate BinaryTree
BooleanTemplate -> BooleanTemplate : buildTopDown()
activate BooleanTemplate
BooleanTemplate --> BooleanTemplate
deactivate BooleanTemplate
BooleanTemplate --> AddBooleanCommand
deactivate BooleanTemplate
>-- AddBooleanCommand
deactivate AddBooleanCommand
138 (commented on others PR)
This will need to be revised once @sevenseasofbri implements CalculateBooleanCommand.execute(). Consider revising the return of control of the sequence diagrams.
139 (commented on others PR)
Please fix the activation here as well.
140 (commented on others PR)
[-> SetBooleanCommand : execute()
activate SetBooleanCommand
SetBooleanCommand -> BooleanTemplate : setInput(template, 2, 0)
activate BooleanTemplate
BooleanTemplate -> BinaryTree : getT(2)
activate BinaryTree
BinaryTree --> BooleanTemplate : gate
deactivate BinaryTree
BooleanTemplate -> TwoInputGate : setSecondInput(0)
activate TwoInputGate
TwoInputGate --> BooleanTemplate
deactivate TwoInputGate
BooleanTemplate -> BooleanTemplate : buildTopDown()
activate BooleanTemplate
BooleanTemplate --> BooleanTemplate
deactivate BooleanTemplate
BooleanTemplate --> SetBooleanCommand
deactivate BooleanTemplate
[>-- SetBooleanCommand
deactivate SetBooleanCommand
141 (commented on others PR)
Needs revision - consider changing this to BooleanTemplate being associated with Gate objects, which all the other gates inherit from. Also, TwoInputGate only has input and secondInput, they do not know about other Gate objects. The logic is done from within BooleanTemplate.
142 (commented on others PR)
Maybe this can be better shown with a UML Class diagram?
143 (commented on others PR)
Maybe these steps here and the next command can just be shown by UML diagrams mostly? If the sequence diagram is very clear, the steps taken might even be redundant.
144 (commented on others PR)
The name of the actual file is still docs/diagrams/setBooleanCommand.png. It will not render properly if the case does not match.
145 (commented on others PR)
Any reason you name them States? Seems harder to deal with than just using their names.
146 (commented on others PR)
We no longer have the TwoInputGate, all are from Gate now.
147 (commented on others PR)
Consider revising these to show inheritance i.e. the >|-- arrow.
148 (commented on others PR)
Arrow is in the wrong direction?
State1 --> "1..7" State5
The "1..7" shows the multiplicity.
149 (commented on others PR)
Already implemented - can be updated.
150 (commented on others PR)
No longer needed. Also States name could be changed?
151 (commented on others PR)
Yes.
152 (commented on others PR)
Nice, added a 500.0 µF
153 (commented on others PR)

154 (commented on others PR)
155 (commented on others PR)
import java.util.Scanner;
156 (commented on others PR)
public static void main(String[] args) {
157 (commented on others PR)
actually this was the old tutorial commands, can remove these then
158 (commented on others PR)
lines 10 to 16 were the tutorial commands previously. see the exit command?
159 (commented on others PR)
yes I know. but we have 2 sets of tutorial commands for tutorial circuit now.
160 (commented on others PR)
Nice work! I admire the beauty of this change.
161 (commented on others PR)
Adding an edge to an AM is O(1), checking if an edge exists is also O(1). Removing an edge is also O(1). The issue with the AM is the high space complexity.
162 (commented on others PR)
Since we have kramdown with {\:toc}, this isn't needed right?
163 (commented on others PR)
I think we are all forgetting the GUI constraint here. Any dynamic visualisation would dangerously be part of GUI, and making everything static (similarly for Boolean) cuts that issue out. Maybe consider adding this consideration as well?
164 (commented on others PR)
You can take a look at our current documentation page which already uses it: https://ay2021s1-cs2113t-w13-3.github.io/tp/DeveloperGuide.html
If you want to see it on your own fork you can setup the docs as the site page in your settings: https://nus-cs2113-ay2021s1.github.io/website/schedule/week7/project.html#a-userguide
165 (commented on own PR)
Will be used when it's actually implemented. The Ui will need to print what happens with execution, something like my iP. i.e. the implementation here is not complete, and requires #3 to be completed.
166 (commented on own PR)
Hmm, I feel it's quite intuitive? What else would you do with the otherValue, with the method name and JavaDoc already given?
167 (commented on own PR)
Nope! In fact, it cannot compile if you add the break statements.
168 (commented on own PR)
We can consider adding more Exception classes and functionality later on.
169 (commented on own PR)
Good idea 👍
170 (commented on own PR)
Good point. Should there be an assertion in BooleanTemplate.setInput() as well? Though it does seem we are using DukeException for BinaryTree.insert(). Maybe all as exceptions?
171 (commented on own PR)
Yep yep, I basically left this whole part untouched since @PraveenElango should be solving it in #75.
172 (commented on own PR)
Same as above.
173 (other comment)
#10 Inductor done.
174 (other comment)
No need to link the issue #10 yet, else it will automatically close it when you merge. Can link when the last component is done.
175 (other comment)
Closed as duplicate of #19.
176 (other comment)
You don't need to close the PR and make a new one once you've made the changes. But it's okay, now that you've opened #19 we'll use that.
177 (other comment)
Inductor done in #11
Capacitor done in #16
Resistor done in #19
Voltage Source done in #21
I think we can merge all and close this issue?
178 (other comment)
Todo:
Take a look at Parser.prepareCalc().
Take a look at Command and other subclasses.
Create CalculateCommand class.
Implement CalculateCommand.execute() method.
Use Template calculate methods to get values.
UseUi to print result.
Add JUnit test(s) for CalculateCommand.
179 (other comment)
Assigned JUnit Testing classes:
| Class | Person |
|-------------|--------------------------------------------------|
| Command | @sevenseasofbri will do HelpCommand subclass, @dorianfong98 the rest |
| Component | @oasisbeatle |
| Parser | @hughjazzman |
| Template | @PraveenElango |
| Ui | @sevenseasofbri |
180 (other comment)
Being the last task of milestone v1.0, we can follow this after closing: https://nus-cs2113-ay2021s1.github.io/website/schedule/week9/project.html#using-milestones
A working product tagged.
CI passing.
Milestone updated to match the product.
Milestone closed.
181 (other comment)
@dorianfong98 Command classes done?
182 (other comment)
To be updated with #57 features, including the user stories addressed.
183 (other comment)
@sevenseasofbri will update Glossary once everyone has updated the Dev Guide. #73
184 (other comment)
Duplicate of #62.
185 (other comment)
@dorianfong98 to do BinaryTree
@sevenseasofbri to do BooleanTemplate
186 (other comment)
Add a PrintCommand to print both CircuitTemplate and BooleanTemplate.
187 (other comment)
@sevenseasofbri Add the parsing into Parser,BooleanParser and CircuitParser, to return TutorialBooleanCommand and TutorialCircuitCommand.
188 (other comment)
On these two points:
Why it is implemented that way.
Alternatives considered.
I believe we can add this for the CircuitTemplate as well as the BinaryTree.
Can @oasisbeatle or @dorianfong98 do a short write-up for CircuitTemplate and @sevenseasofbri or @dorianfong98 do one for BinaryTree?
189 (other comment)
We can also add future (hypothetical) features past v2.1.
190 (other comment)
Not implemented in v2.0.
191 (other comment)
Released: https://github.com/AY2021S1-CS2113T-W13-3/tp/releases/tag/v2.0
192 (other comment)
Hi Nishanth, thanks for the review! Is it ok if you check out the current PR #119 DG to see if some of these issues are resolved?
193 (other comment)
If the LrTemplate() call is a constructor, the arrow should point to the :LrTemplate object, and the activity bar should be connected to :LrTemplate. Please review the other sequence diagrams and constructors as well.
@sevenseasofbri I looked through the plantUML docs, I think you can use the 'create' keyword for object creation
@nishanthelango Ah I should've looked too, makes a lot of sense that constructors can be called that way within plantUML. Thanks!
194 (other comment)
(Figure 16) Consider removing the parentheses in AndGate() to avoid confusion with methods
@nishanthelango Is this perhaps clearer?
195 (other comment)
Yep won't be added.
196 (other comment)
Thanks for the feedback. Will fix, but will not appreciate the rudeness of this issue. Do provide feedback without sarcasm and more tact. @brandonywl
The presence of a table to summarize keywords is great but other than code, the rest are only used 3 times or irrelevantly.
I disagree. Dr Jane (CS2101 prof) has informed us that this is a good way to make sure there is no confusion when different types of formatting or icons turn up in the guide. Maybe you can explain the rationale as to why they are irrelevant?
Irrelevant use of bolding. Provides no significant information to user.
Would still disagree with this point though, since CLIrcuit Assistant is the name of the application. Maybe you can make your point with a proper explanation?
For code, the bucket is too broad and confuses users as to what they should see and what they should type into the CLI. It is preferable to use screenshots instead for what they should see and that should reduce your issues by quite a fair bit.
Fair enough, I suppose there should be differentiation between only user input and formatting command words.
Unclear which should I actually put into my CLI or should I see. Surprise! It's none of the two. Only the last line follows the standardized guide. This is repeated consistently across the UG.
It's unclear which two you are referring to here. The title/section headers are definitely not equivalent to the format, which admittedly could be explained more or with better formatting. As for the Tutorial commands, perhaps we could add a preface that the Tutorial commands should be followed to the T, and that the User Guide is only a general overview. Also, another preface to explain that all user input are under the Format: (maybe Format could be bolded or underlined) with the Expected Output being directly after could be placed before the commands.
197 (other comment)
This change would be under the SetCircuitCommand#toString() method actually.
198 (other comment)
It seems that following the original format given to us wasn't too useful. I suppose we could put the format in the section names themselves.
199 (other comment)
Disagree here. Link is provided from the top for the summary of commands at the bottom. However, I do believe the Command Preface could include this fact.
200 (other comment)
Similar to #129.
201 (other comment)
@PraveenElango I think straight away can print the summary table, and have the parameter command stuff only in the DG.
@Chongjx (163 comments)1 (commented on others PR)
Is it possible to catch the exception with this function and return a new IncorrectCommand("Missing info" or "No keyword") here
2 (commented on others PR)
I am thinking that the printFindNotesMessage in InterfaceManager can be a static function and it returns a string of the formatted note. This is to consolidate all the printing to be only done inside the main runLoop function
3 (commented on others PR)
Make this function return the string instead of printing them out directly
4 (commented on others PR)
Can use InterfaceManager.LS (line separator) for the \n to standardize all new line
5 (commented on others PR)
since you are using get function, maybe can change all the Strings to private type in the respective class
6 (commented on others PR)
I think you can import these from the tagManager.
7 (commented on others PR)
The person has to enter the prefix for every tag they want to add so I think can leave it as "TAG" to avoid confusion.
8 (commented on others PR)
Thats also viable, also can add in "TAG COLOR" too
9 (commented on others PR)
Don't have to make it static, each Command class have a TagManager object, can access the tagManager from there
10 (commented on others PR)
Get from the tagManager instead.
11 (commented on others PR)
the name of the variable can be COMMAND_WORD since now add event is split into another class
12 (commented on others PR)
Can replace the "Note deleted:" with your command successful message
13 (commented on others PR)
Violates coding standard
14 (commented on others PR)
Likewise violates coding standard
15 (commented on others PR)
Nice function here.
16 (commented on others PR)
Dont need to have this catch here. Make this function throw a SystemException, the parseCommand function will catch it.
17 (commented on others PR)
Should there be some error handling here? Like incase there are duplicate events.
18 (commented on others PR)
Can rename COMMAND_WORD_EVENT to COMMAND_WORD, previously used this to separate COMMAND_WORD_NOTE but since now this has it's own class can just shorten it.
You are also missing the COMMAND_USAGE_MESSAGE
19 (commented on others PR)
I used the wrong "Boolean" when creating the class, can change it to "boolean"
20 (commented on others PR)
Makes sense.
21 (commented on others PR)
prepareAddNote (and the other prepare functions) do not have the catch block for SystemException. This catch will be handled inside parseCommand. The only exception to catch in prepare functions should only be NullPointerException, ArrayIndexOutOfBoundsException and maybe date time related exception for this function.
22 (commented on others PR)
Can make this private and have a getter function for it to be used in HelpCommand
23 (commented on others PR)
Can replace the \n with InterfaceManager.LS for consistency.
24 (commented on others PR)
throw new SystemException instead of return a new IncorrectCommand. And can remove the catch for SystemException.
25 (commented on others PR)
There should be a catch for NullPointerException in the event that the user just enter the command only without any space after it. i.e. "add-e"
26 (commented on others PR)
This two should be private members.
27 (commented on others PR)
This function can be moved into Parser. The original intention of this class is to create a list of acceptable date time formats and returns date time info in a specific format.
28 (commented on others PR)
There should not be any return new IncorrectCommand here as well as the catch block for SystemException. Can change the catch block for ArrayIndexOutBoundsException and NullPointerException to throw a new SystemException.
Suggest to split the catching of the two exceptions mentioned above to throw a more specific SystemException.
29 (commented on others PR)
Prepare functions should throw SystemException if necessary.
30 (commented on others PR)
The exception should be missing index prefix instead for your case.
31 (commented on others PR)
Would it ever reach this point? If so, can change it to throw SystemException instead of return new IncorrectCommand for consistency with other prepare functions.
32 (commented on others PR)
Actually you can return a new DeleteNoteCommand within the switch case. So it should return immediately after reading a title or an index. If it reaches the code after the switch case can throw a systemException, say missing title/index or missing description
33 (commented on others PR)
Is it necessary to create a new Note object here?
34 (commented on others PR)
Maybe can make this a static final string as COMMAND_UNSUCCESSFUL_MESSAGE
35 (commented on others PR)
A space after the comma
36 (commented on others PR)
Have you tested listing notes with a non-existing tag? i.e. list notes with CS2113 tag, but there is no such tag in the map at all? getTag returns null for such case so I think you should only add those that are not null.
Tag tag = tagManager.getTag(tag);
if (tag != null) {
tagList.add(tag);
}
37 (commented on others PR)
Can do a check for the size of notes, if it has no element can return an unsuccessful message.
38 (commented on others PR)
This can be private since its only used within this class.
39 (commented on others PR)
Correct me if I am wrong but I don't think JavaDoc works inside function? Like it won't be displayed on the html.
p.s. I am referring to Narzyl comment.
40 (commented on others PR)
Is there a need to append to the noteString or can you just return the unsuccessful message?
41 (commented on others PR)
I think it would look nicer if the tags are on the same line as the title. i.e.
CS2113 Notes [CS2113] [Important] [School]
42 (commented on others PR)
Shld this comment be above? or somewhere in execute? Looks a little out of place
43 (commented on others PR)
private static final String INDEX_OUT_OF_RANGE_MESSAGE = "The index you specified is out of range. "
+ "Please specify the index that is indicated when you print the event list";
44 (commented on others PR)
For the "Year-Month(1-12)"
Is the user suppose to enter the year followed by the month, 2020-1, or its just the month itself?
45 (commented on others PR)
I believe Ramana is renaming all the exception with "WRONG" to "INVALID", can follow that.
46 (commented on others PR)
Rename as event? Preferably not to use single letter for variables unless its for iterators.
47 (commented on others PR)
The parameter has to be an Object? Is there any instance that this will be used to compare non-Reminder objects?
48 (commented on others PR)
Not to sure about this, but is there a need to create a class for this? Does implementing to a class, say Event or DateTimeManager and then overriding in that class work? Like wise for the DateTimeComparator, since a class can implements multiple interfaces.
49 (commented on others PR)
Can declare these numbers as static final variables
50 (commented on others PR)
I'm not sure if I remember correctly but previously Ramana mentioned that can return a new RemindCommand() directly right, since you are not using userMessage
51 (commented on others PR)
Don't have to create new object for all. In your case can just create Timetable, and pass in null for the other parameters
52 (commented on others PR)
return Formatter.LS + COMMAND_SUCCESSFUL_MESSAGE + noteString.toString();
53 (commented on others PR)
return Formatter.LS + COMMAND_UNSUCCESSFUL_MESSAGE_INVALID_TAG;
54 (commented on others PR)
return Formatter.LS + COMMAND_UNSUCCESSFUL_MESSAGE_EMPTY_NOTEBOOK;
55 (commented on others PR)
return Formatter.LS + COMMAND_SUCCESSFUL_MESSAGE + noteString.toString();
56 (commented on others PR)
private static final String NOTUS_LOGO = Formatter.LS
57 (commented on others PR)
'''suggestion
+ Formatter.LS
+ " .-') _ .-') _ .-') "
+ Formatter.LS
+ " ( OO ) ) ( OO) ) ( OO ). "
+ Formatter.LS
+ ",--./ ,--,' .-'),-----. / '._ ,--. ,--. (_)---\\_) "
+ Formatter.LS
+ "| \\ | |\\ ( OO' .-. '|'--...__)| | | | / _ | "
+ Formatter.LS
+ "| \\| | )/ | | | |'--. .--'| | | .-') \\ :' '. "
+ Formatter.LS
+ "| . |/ \\_) | | | | | | | | |( OO ) '..'''.) "
+ Formatter.LS
+ "| |\\ | \\ | | | | | | | | | '-' /.-._) \\ "
+ Formatter.LS
+ "| | \\ | '' '-' ' | | (' '-'(_.-' \\ / "
+ Formatter.LS
+ "'--' '--' '-----' '--' '-----' '-----' "
+ Formatter.LS;
'''
58 (commented on others PR)
+ NOTUS_LOGO + Formatter.LS
59 (commented on others PR)
private static final String ENTER_COMMAND_MSG = Formatter.LS
60 (commented on others PR)
Can move this over to formatter class, and have a static function to get this.
61 (commented on others PR)
'''suggestion
private static final String NOTUS_LOGO = LS
+ LS
+ " .-') _ .-') _ .-') "
+ LS
+ " ( OO ) ) ( OO) ) ( OO ). "
+ LS
+ ",--./ ,--,' .-'),-----. / '._ ,--. ,--. (_)---\\_) "
+ LS
+ "| \\ | |\\ ( OO' .-. '|'--...__)| | | | / _ | "
+ LS
+ "| \\| | )/ | | | |'--. .--'| | | .-') \\ :' '. "
+ LS
+ "| . |/ \\_) | | | | | | | | |( OO ) '..'''.) "
+ LS
+ "| |\\ | \\ | | | | | | | | | '-' /.-._) \\ "
+ LS
+ "| | \\ | '' '-' ' | | (' '-'(_.-' \\ / "
+ LS
+ "'--' '--' '-----' '--' '-----' '-----' "
+ LS;
'''
62 (commented on others PR)
The message is from pin command
63 (commented on others PR)
💡 If no tag color is specified, the color of the tag will be that of the default white color.
64 (commented on others PR)
Are you moving all the message to a class? If so you can call the format function inside ExitCommand execute so that there is no need for an additional call here
65 (commented on others PR)
Want to move all the asci art and messages to another class?
66 (commented on others PR)
I dont think this class need a test since its just messages.
67 (commented on others PR)
Can this be a function in notebook, say getNote(String noteTitle) and return true/false or the Note object/null. There should not be an ArrayList needed.
68 (commented on others PR)
Is there a need to get the content first?
69 (commented on others PR)
Can refactor most of this into inputContent(), including the do while.
Eventually it should just be:
content = inputContent;
if (content == null) {
return Formatter.formatMessage(unsuccessful message);
} else {
note.setContent(content);
...
...
...
return Formatter.formatMessage(successful message +...)
}
70 (commented on others PR)
No need to check if getTagsName is blank. Will do the fix on the formatter side.
71 (commented on others PR)
Is systemException thrown anywhere in Formatter?
72 (commented on others PR)
Make the function return the boolean instead of throwing exception? Also, should the equals be equalsIgnoreCase?
73 (commented on others PR)
No need for this exception since its the same as the COMMAND_UNSUCCESSFUL_MESSAGE in your deleteCommand. I have added my comment on the function to return the boolean instead of throwing exception.
74 (commented on others PR)
Unused import package
75 (commented on others PR)
Catch the StringIndexOutOfBoundsException within the function and return null instead.
76 (commented on others PR)
Unused import package?
77 (commented on others PR)
There is a notebook.getNote(index) function, can use that instead for simplifcation
78 (commented on others PR)
Possible to let notebook.deleteNote(index) return a boolean as well. So that can move the isDeleted outside of the if else (titleIsBlank) and do a consolidated return..
i.e.
if (titleIsBlank) {
title = getTitle()
isDeleted = notebook.deleteNote(index)
} else {
isDeleted = notebook.deleteNote(title)
}
if isDeleted
return success else return unsuccessful
79 (commented on others PR)
Is there a need to new the array list here?
80 (commented on others PR)
No need to have this variable here. If title is blank, you can reuse the variable "title" and assign the title here. At the end you will only need 1 return Formatter.formatString(ARCHIVE_NOTE_MESSAGE + title);
81 (commented on others PR)
Why is there a need for archivedNotesList? Since all the note can only have unique names, wont it only return 1 note object? There is a getNote(title) function in notebook, you can use that instead.
82 (commented on others PR)
getNotes.get(i) can be replaced with getNote(i)
83 (commented on others PR)
Is there a need to new the arrayList here? Ideally, ListNoteCommand should just call a function in notebook, say getNotes(bool isSorted, arrayList>Tag>) (currently is only getNotes(), you can overload it). All logic handling should be within notebook class itself to sort and return the requested arraylist of note. This is also for reusability, having the function in the notebook instead in this ListNoteCommand Class. Do refer to the word doc I shared.
84 (commented on others PR)
All formatting should be inside formatter class. Can change the formatNotebook to formatNotes(arrayList Notes)
85 (commented on others PR)
Similar to my comment for archiveNoteCommand
86 (commented on others PR)
Unused import statement
87 (commented on others PR)
new in the constructor
88 (commented on others PR)
This function shld be split into 2. 1 is getArchivedNotes() where it just return the arrayList. Another function is archiveNote(int index), overloaded with archieveNote(string title). ArchiveNoteCommand will call this function and this function will handle will removing of note from the original list and adding into the archivedNotes arrayList
89 (commented on others PR)
Likwise there should be an function for unarchiveNote(int index), unarchiveNote(string title)
90 (commented on others PR)
91 (commented on others PR)
92 (commented on others PR)
Discussed that archiveNotes(title) should return a boolean to check if the notebook manage to archive the note successfully
93 (commented on others PR)
94 (commented on others PR)
In what situation will this happen?
95 (commented on others PR)
Same comment as ArchiveNoteCommand
96 (commented on others PR)
I think @prachi2023 has this line to display the info for pin note command. Can have the function as getPinnedString()
97 (commented on others PR)
The Boolean notebookToggle can be renamed to isPinned or something similar to better identify its purpose.
98 (commented on others PR)
As discussed, change the parameter ArrayList>Note> to take in a boolean fromOriginalNoteList or something similar and do a if else statement to determine which arrayList to get the note from. Also, consider the case that the note does not exist, what will the stream return?
99 (commented on others PR)
No need for this 1 line function.
100 (commented on others PR)
Handle the case when the noteTitle does not exist.
101 (commented on others PR)
just do notes.remove(index) here
notes.remove(index);
102 (commented on others PR)
archivedNotes.remove(index);
notes.add(unarchivedNote);
103 (commented on others PR)
Similar to archiveNote, handle if title does not exist.
104 (commented on others PR)
No need to have the formattedString if its just passing an empty string into the function.
105 (commented on others PR)
can remove the last parameter for the function. Suggested way:
formattedString = getNoteString(pinnedHeader, pinned);
formattedString = formattedString.concat(getNoteString(unpinnedHeader, unpinned)
106 (commented on others PR)
Change this to a local variable rather than pass in by parameter
107 (commented on others PR)
Why do you use LS? Wont the output have 2 empty lines? and the sides will be broken? i.e.
|| Title ....... ||
>> LS here>>
|| Content...||
>> LS here>>
=========
108 (commented on others PR)
Looks clean now!
109 (commented on others PR)
Realise that this + note.getTagsName can be added when this function is called. i.e. in the command execute
return formatNote(header + note.getTitle + note.getTagsName(), note)
110 (commented on others PR)
There is a formatEvent function in Formatter, use that to format an event object instead of calling event.toStringArray(). Overload it if necessary.
Expected code:
timetable.addEvent(event);
return Formatter.formatEvent(COMMAND_SUCCESSFUL_MESSAGE, event), where formatEvent takes in a header and an event.
111 (commented on others PR)
There is no need for this function here, handle this in Formatter.
112 (commented on others PR)
Handles in formatter.
113 (commented on others PR)
This should be handled in formatter instead of splitting the content here. There is an empty function called formatEvent. Overload if necessary
Suggested: formatEvent(event)
encloseRow("Event: " + event.getTitle();
encloseRow("Date: " + event.date.toString() + "\tTime: " + event.time.toString());
encloseRow("Reminder: " + event.isToRemind);
encloseRow("Repeating: " + isRecurring);
114 (commented on others PR)
As per previous, format in formatter. Can check if the event is an instance of RecurringEvent and enclose the necessary info.
115 (commented on others PR)
As per other comments.
116 (commented on others PR)
Can call formatter to get the expected output, do not have to manually type out. In the event that the format changes, you do not have to edit the format here.
expected = Formatter.formatEvent(SUCCESSFUL_MESSAGE, event)
117 (commented on others PR)
Maybe can overload another formatEvent to take in Header as one of the parameter. That way, just have to call 1 format function.
118 (commented on others PR)
Likwise, same as above
119 (commented on others PR)
Do the enclosing here and just make it return the formatted string straightaway. Can overload it to take in a header for printing 1 event.
120 (commented on others PR)
Likewise, returns the formatted string
121 (commented on others PR)
Noted on this.
122 (commented on others PR)
Noted.
123 (commented on others PR)
3 MD
124 (commented on others PR)
125 (commented on others PR)
2 MD
126 (commented on others PR)
Tag Notes
----
5 MD
]
127 (commented on others PR)
5 MD
128 (commented on others PR)
2 MD
129 (commented on others PR)
2 MD
130 (commented on others PR)
2 MD
131 (commented on others PR)
2 MD
132 (commented on others PR)
Why did you remove this variable? I thought it is needed to differentiate the notes when saving to txt file? Or is the archived note list saved in a separate txt file?
133 (commented on others PR)
Ya, I am referring to loading from text file, what differentiates them to be loaded into respective array list?
134 (commented on others PR)
I have went through her code, the boolean is still needed. When loading from text file, it uses Parser to create a new AddNoteCommand, inside Notebook the addNote(note) function can have an if else, based on the boolean isArchive and then add into the respective arrayList.
135 (commented on others PR)
Is the boolean added back in? Looks like it's still removed.
136 (commented on others PR)
You may want to have an arraylist of note for the expected output and then use the Formatter.formatNotes. In the event that the format changes, you do not have to manually change the expected string again.
137 (commented on others PR)
All expected string can use the Formatter functions, for this case encloseString(title). Since the purpose of the command test are to compare the result and not the formatting, it is ok to just use those functions.
138 (commented on others PR)
Likewise
139 (commented on others PR)
He did that in the execute return, since this is a private static final, the time period cannot be added here.
140 (commented on others PR)
This should be formatEvents or formatTimetable. See suggestion for formatEvent(event) in the #108
141 (commented on others PR)
These functions can just sort and compare the events and eventually just return an arrayList of event.
142 (commented on others PR)
Possible to change the parameter such that it takes in an arrayList of events instead of HashMap>Month, HashMap>Integer, ArrayList>Event>>> timetable?
143 (commented on others PR)
In terms of reusability:
for (Event event: events) {
formattedString = formattedString.concat(formatEvent(event));
}
144 (commented on others PR)
There is not much difference, I use concat mainly because intellij will give warning for using += in loop, so I use concat for all cases.
145 (commented on others PR)
If thats the case, I think can leave it. The only concern is that the data struct looks complicated.
146 (commented on others PR)
Why does loadAll function takes in storageManager as one of the parameter?
147 (commented on others PR)
Why is there a getNoteContent here since it is adding a new note? I believe the line below that @Nazryl added is to pass his JUnit test.
148 (commented on others PR)
Would there be any difference if saveNote is not a static function? Since all command classes contains a storageManager object, all are able to access this function.
149 (commented on others PR)
Can use Formatter.LS if this is a line separator.
150 (commented on others PR)
I see the reason you pass in storageManager is only for setData. Can replace it with 'this' so that this function does not need the StorageManager parameter.
command.setData(notebook, timetable, tagManager, this);
151 (commented on others PR)
@R-Ramana The boolean for isArchive is still needed for loading.
152 (commented on others PR)
Currently we have 2 arraylist, 1 for all the notes and 1 for archived notes. Need another loop for the getArchivedNotes()
@R-Ramana Here is the saving part.
153 (commented on others PR)
This is a temporary suggestion I provided her. Attritbute.BRIGHT_COLOR_TEXT().toString cannot be used as case expression because they are not constant. There is another way to use switch, but since its related to color, I will edit on my side.
154 (commented on others PR)
What error? I tried and it works.
155 (commented on others PR)
Can declare this as a const?
156 (commented on others PR)
Can remove it since its not used anymore right?
157 (commented on others PR)
formattedString = formattedString.concat(encloseRow(EMPTY_SPACE + truncatedContent));
158 (commented on others PR)
int offsetSet = stringBeforeReset.indexOf(POSTFIX);
159 (commented on others PR)
This 2 can keep as well
160 (commented on others PR)
If there are no reminders, it will add a none, then would the output be: "None reminder"? Sounds a little weird.
161 (commented on others PR)
Why is there 2 notes of the same title? This shld not be accepted when adding note.
162 (commented on others PR)
Is this function called in other methods? Changing this boolean may affect the output of others. Also, from the parameter name, it sound logical that if it is not isArchive, it will search through the notes arrayList as described in the JavaDoc comment.
163 (commented on others PR)
Suggested change should be inside the archiveNotes(String noteTitle) under notebook.
Note archivedNote = getNote(noteTitle, true); ----> Note toBeArchiveNote= getNote(noteTitle, false);
164 (commented on own PR)
yup it should! I just generate a template test class therefore it consists of the execute function inside. All the test functions should be renamed accordingly.
165 (commented on own PR)
The intellji gave warning saying that the field may be final so I changed it. Will be reverting that since the int cannot be final. Likewise for the rest of the similar cases below
166 (commented on own PR)
For this, because the user can choose not to input the sort parameter, therefore the Boolean can hold a null value, which is used to check later
167 (commented on own PR)
Don't really think there is a need for a function because this help string will be a constant. Can actually merge with the declaration of the HELP_STRING. @R-Ramana your view?
168 (commented on own PR)
My intent is sort by usage. Noted on the separation.
169 (commented on own PR)
No worries
170 (commented on own PR)
This one is the ide auto ident to next line.
171 (commented on own PR)
This is for tag-e
172 (commented on own PR)
This is deleting of the tag and not untagging. Will update the content.
173 (commented on own PR)
Noted. Will edit it
174 (commented on own PR)
Currently adding of note doesn't check if the title match any archive notes. So I added this. Refer to my changes in AddNoteCommand
175 (other comment)
Failed CheckStyleTest
176 (other comment)
Have you pulled the latest version? There seems to be conflict between the versions.
177 (other comment)
Yup I will close it.
178 (other comment)
Btw can we add the .log files into gitignore. Everyone can generate their .log file on their own local copy.
179 (other comment)
Trying another fix for this
180 (other comment)
I will leave this open until until I find a better fix.
181 (other comment)
Will not close previously linked issue.
182 (other comment)
This is not a bug. Intellji prints white font as black and vice versa. See attached image to change it such that it displays the correct color on intellji
183 (other comment)
Yup!
184 (other comment)
Yup yup
185 (other comment)
Implements #98
186 (other comment)
Closed by #136 and #117
187 (other comment)
@Nazryl
Suggested fix: remove the index-- after handling the PREFIX_INDEX because there is another check for the index value after the for loop. The check is needed in case the user did not enter "/i ...."
return new EditNoteCommand(index - 1, note, addLists, editLists, deleteLists, isInput);
188 (other comment)
@prachi2023 The step to reproduce the bug is wrong, it should be changing the title manually in notebook.txt. Thus, when loading, it attempts to read an non-existent txt file and the content is empty. Maybe can do an error handling. When loading, if it is unable to find the note txt file, skip it. Also do a save all at the exit of Notus.
189 (other comment)
@prachi2023 Can change the message to be "title" pinned/unpinned.
190 (other comment)
@R-Ramana likewise for archiveNote,
unarchiveNotes function in notebook, the getNote(noteTitle, false) should be getNote(noteTitle, true)
191 (other comment)
Unable to reproduce bug, more test required. Possible scenario is that there exist a "JavaDocs" note that is archived therefore list-n does not show that note. May have to modify the 1st error message to indicate that the note is archived or unarchived.
192 (other comment)
User entered wrong command, should be "tag-n" instead of "tag"
193 (other comment)
Requested clarification from user.
194 (other comment)
See #168
195 (other comment)
Suggest to remove the screenshot?
196 (other comment)
Update UG
197 (other comment)
Update UG
198 (other comment)
Update UG
199 (other comment)
Update UG
200 (other comment)
Update UG
201 (other comment)
Could be terminal issue.
202 (other comment)
Unable to reproduce bug. Requested additional info from the user.
203 (other comment)
#168
204 (other comment)
https://github.com/0xZ3RO/ped/issues/2#issuecomment-719929063
@R-Ramana (130 comments)1 (commented on others PR)
If it is a test method should we not follow the following naming conventions?
whatIsBeingTested_descriptionOfTestInputs_expectedOutcome
OR
testMethodName
2 (commented on others PR)
Maybe can update this to COMMAND_USAGE to be clearer on what this String is for 😃
3 (commented on others PR)
private static final String DELIMITER = "|";
4 (commented on others PR)
public int getSize() {
5 (commented on others PR)
+ DELIMITER
6 (commented on others PR)
+ DELIMITER
7 (commented on others PR)
return notes.get(index);
8 (commented on others PR)
Thanks for updating on my behalf 😃
9 (commented on others PR)
As mentioned above
private final String COLOR;
10 (commented on others PR)
Private final right, so should be all CAPS? Can just commit directly from my suggestion 😄
private final int INDEX;
11 (commented on others PR)
Same as above
private final ArrayList<Tag> TAGS;
12 (commented on others PR)
Thought I made the same changes in my previous PR haha
13 (commented on others PR)
Should it be TAGMAP?
private final Map<Tag, ArrayList<Note>> TAGMAP;
14 (commented on others PR)
Just a minor indentation issue. For all my suggestions, if you are okay with it, feel free to commit directly, using the "commit suggestion"! 😃
public static final String COMMAND_WORD = "add-n";
15 (commented on others PR)
* @param note refers to the note to be added.
16 (commented on others PR)
Can we add some 1 line comments to explain what the if-else block is doing?
17 (commented on others PR)
I don't see the System Exception being thrown in the method?
18 (commented on others PR)
Remind the person who is working on AddEvent not to forget this part! 👍
19 (commented on others PR)
* @param userMessage Original string user inputs.
* @throws SystemException if an error occurs.
20 (commented on others PR)
* @throws StringIndexOutOfBoundsException if an error occurs.
* @return A string of converted content input
21 (commented on others PR)
* @throws SystemException if an error occurs.
* @return Result of the delete note command
22 (commented on others PR)
Same as before, please remind the person for AddEventCommandTest
23 (commented on others PR)
Good call!
24 (commented on others PR)
This part is not yet completed?
25 (commented on others PR)
Made the code more concise. Feel free to commit the suggestion directly
+ "the index that is indicated when you print the event list"),
26 (commented on others PR)
Don't think the delimiter is necessary
String dateString = "Date: " + date.toString() + "Time: " + time.toString();
27 (commented on others PR)
Use InterfaceManager.LS to standardize for new lines.
return titleString + InterfaceManager.LS
+ dateString + InterfaceManager.LS
+ remindString + InterfaceManager.LS
+ repeatingString;
28 (commented on others PR)
Added a new line
* @param input User input to be parsed
29 (commented on others PR)
InterfaceManager.LS to standardize new lines.
return "Added the following!" + InterfaceManager.LS
+ InterfaceManager.LS + event.toString();
30 (commented on others PR)
Same as above.
public static final String COMMAND_SUCCESSFUL_MESSAGE = "Event deleted:" + InterfaceManager.LS;
31 (commented on others PR)
Can include the system exception also
* @param index Index to be removed.
* @throws SystemException
32 (commented on others PR)
Added a line break
* Gets the timetable for a specified month and year. Includes multiple recurrent events.
33 (commented on others PR)
Same as above + phrasing error.
* Given an ArrayList of events, get all events that will occur during the specified time period.
34 (commented on others PR)
Added line break
import seedu.duke.command.ViewNoteCommand;
35 (commented on others PR)
import seedu.duke.data.timetable.DailyEvent;
import seedu.duke.data.timetable.Event;
import seedu.duke.data.timetable.MonthlyEvent;
import seedu.duke.data.timetable.RecurringEvent;
import seedu.duke.data.timetable.WeeklyEvent;
import seedu.duke.data.timetable.YearlyEvent;
import java.time.LocalDateTime;
36 (commented on others PR)
Added a line break
* string trimmed.
37 (commented on others PR)
Same as above
* for it to be recurring and to set reminders of the event.
38 (commented on others PR)
Maybe can add this in the JavaDoc
39 (commented on others PR)
Added Line break
* @param userMessage User Input without the action word
40 (commented on others PR)
Fair enough!
41 (commented on others PR)
Just minor phrasing
* Provides a description of how the command should be used.
*
* @return a string description of how the command should be used.
42 (commented on others PR)
Removed extra line
43 (commented on others PR)
If final I think it should be in caps
private final LocalDate END_RECURRENCE;
private final String RECURRENCE_TYPE;
44 (commented on others PR)
endRecurrence should be all caps right if this is for the final? Think got a few files to amend in that case
45 (commented on others PR)
Is the throws SystemException necessary here? I don't see it being thrown.
public void deleteNote(int note) {
46 (commented on others PR)
Remove extra line
47 (commented on others PR)
Should we throw the SystemException here?
private Command prepareViewNote(String userMessage) throws SystemException {
48 (commented on others PR)
Think maybe we can have this at the very beginning?
private static final String WELCOME_MSG_STRING = "Welcome to NotUS! Type \"help\" if you need to see a list of commands and their usages.";
49 (commented on others PR)
I feel this breaks the flow.
private static final String COMMAND_UNSUCCESSFUL_MESSAGE = "There are no matching notes. "
+ "Please try another search query.";
50 (commented on others PR)
@brandonywl Yup, so when I was using Boolean it was because there are 3 cases. Default (which is chronological order), ascending or descending. Hence I wanted to use Boolean which can hold true, false and null! boolean on the other hand cannot hold the null value.
51 (commented on others PR)
Should we sort this by alphabetical order? I mean not a big issue, but if needed, I can do it in my next push? Or if you prefer to sort by usage, then maybe have a line break between each use group?
52 (commented on others PR)
If we are splitting by space, should we use a whitespace regex?
String[] tagInfo = tagsInfo.split("\\s+", 2);
53 (commented on others PR)
title = checkBlank(infoDetails[1], exception);
54 (commented on others PR)
To standardize with the rest of the new lines
String stringToPrint = note.getTitle() + InterfaceManager.LS;
55 (commented on others PR)
Same as above
stringToPrint += tag.toString() + InterfaceManager.LS;
56 (commented on others PR)
To standardize with your other PR
private static final String INDEX_OUT_OF_RANGE_MESSAGE = "Index is out of range.";
57 (commented on others PR)
Same as above
58 (commented on others PR)
Think you can make this statement clearer, and missing param
59 (commented on others PR)
Add @param for the javaDoc?
60 (commented on others PR)
Add @param for the javaDoc?
61 (commented on others PR)
Add @param for the javaDoc?
62 (commented on others PR)
Add @param for the javaDoc?
63 (commented on others PR)
Would this be possible?
result += InterfaceManager.LS.repeat(2);
64 (commented on others PR)
I feel like there is arrow-head coding here. Would this work?
if (reminders.size() == 0) {
return result += "No reminders today!";
}
boolean first = true;
for (Reminder reminder : reminders) {
if (!first) {
result += InterfaceManager.LS;
}
first = false;
result += reminder.toString();
}
65 (commented on others PR)
EXCEPTION_INVALID_LIST_TIMING_FORMAT("Your input list timing query has a wrong format. "
66 (commented on others PR)
EXCEPTION_INVALID_TIMING("Your input has a wrong format for the date time input. "
67 (commented on others PR)
EXCEPTION_INVALID_REMINDER_FORMAT("Your input has a wrong format for the time before reminder. "
68 (commented on others PR)
EXCEPTION_INVALID_RECURRING_TYPE("There are only the following recurring types: "
69 (commented on others PR)
EXCEPTION_INVALID_TIME_UNIT("That time unit is not accepted!"),
70 (commented on others PR)
Do we assert here? I think assert at a Test Class right?
71 (commented on others PR)
Whitespace
*
* @param title Title of event.
72 (commented on others PR)
Added whitespace
String dateString = "Date: " + date.toString() + "\t Time: " + time.toString();
73 (commented on others PR)
Again looks like arrow-head coding. Can we try this?
}
comp = time.compareTo(o.time);
if (comp != 0) {
return comp;
} else {
return title.compareTo(o.title);
}
74 (commented on others PR)
* @param dateToRemind Date of reminder
75 (commented on others PR)
Seems like you are not using the userMessage
return prepareRemind();
76 (commented on others PR)
Actually if you have nothing to prepare why don't you return this directly at the parser switch case above?
private Command prepareRemind() {
return new RemindCommand();
77 (commented on others PR)
Added Whitespace
*
* @return Instantiated Timetable with 1 event.
78 (commented on others PR)
Added Whitespace
*
* @return Instantiated Timetable with 4 default events.
79 (commented on others PR)
Added Whitespace
* Wrapper around assertEquals for code readbility.
*
80 (commented on others PR)
For more clarity
* @param tagName Name of the tag to be set.
* @param tagColor Color of the tag to be set.
81 (commented on others PR)
Feels like a little bit of arrowhead coding. Jun Xiang has a good suggestion to reduce it.
82 (commented on others PR)
noOfChar feels a little hard on the eye. Can I suggest something else?
public static void deleteLine(StringBuilder commandInput, String characters, int charCount) {
83 (commented on others PR)
* @param charCount Number of character. 0 to remove new line, 1 to resume typing on the same line.
84 (commented on others PR)
Easier to make changes if needed - using markdown syntax
**Prerequisites:**
* JDK 11
* IntelliJ IDE
85 (commented on others PR)
Import the project as a **Gradle project**.
86 (commented on others PR)
**NotUS** manages the flow of the application. On launch, it will create the necessary components, as listed above
87 (commented on others PR)
**Parser**
88 (commented on others PR)
1. Receives the user input message as a whole.
1. Interprets the type of command and splits the message to identify all the parameters provided.
1. Creates and returns the Command class respectively.
{insert Parser.puml here}
**Command** classes
89 (commented on others PR)
All of our Javadocs was @param parameter definition. There was no additional whitespace to align the columns. If we are doing this, should we then standardize for all JavaDocs? Would it be easier to just have a single space?
90 (commented on others PR)
Same as in the previous PR, can consider concat for standardization
91 (commented on others PR)
Same as the previous PR, can consider the following
result.set(result.size()--, result.get(lastIndex) + endRecurrenceString);
92 (commented on others PR)
I think this can come under the last subsection under section 2
93 (commented on others PR)
Don't think the PinCommand is created by the parser function right? Maybe can phrase it better?
94 (commented on others PR)
1. Toggles the pinned status of the specified note.
95 (commented on others PR)
1. Returns the title as well as the pinned status of the note.
96 (commented on others PR)
Yeap I guess! But this one can leave out for now. Jun Xiang will be modifying the Parser command to make our code reflect more OOP
97 (commented on others PR)
So when we used String in the formatter class, we have been using .concat(). Might want to consider doing these += as concats (in the Formatter class)
98 (commented on others PR)
If you are not using the lastIndex anywhere else maybe can consider
result.set(result.size() - 1, result.get(lastIndex) + endRecurrenceString);
99 (commented on others PR)
Maybe can add the time period parameter?
100 (commented on others PR)
Not much as Jun Xiang mentioned, but I think it would be better if we can standardize the code 👍
101 (commented on others PR)
Would you be able to create a StorageManager storageManager variable and access storageManager.saveNote(note)?
102 (commented on others PR)
Put "unable to write file" as a COMMAND_UNSUCCESSFUL type variable. Then pass that variable instead
103 (commented on others PR)
EXCEPTION_FILE_CREATION_ERROR("Unable to create the file!"),
EXCEPTION_FILE_NOT_FOUND_ERROR("Unable to find the file!"),
EXCEPTION_FILE_DELETION_ERROR("Unable to delete the file");
104 (commented on others PR)
@prachi2023 FYI, have re-added it in the Note class. Please take a look if you need to use.
105 (commented on others PR)
Can we use a switch statement?
106 (commented on others PR)
INDEX STRING is not very clear on what it does. Do you think we can use something like Line number or something?
107 (commented on others PR)
As mentioned previously, I don't think the other JavaDoc comments had white space. Maybe we should standardize?
108 (commented on others PR)
Not 100% sure if a user will understand what exactly Missing line content is. maybe can phrase it better?
109 (commented on others PR)
As above for the whitespace
110 (commented on others PR)
As above for the whitespace
111 (commented on others PR)
//@@author prachi2023
112 (commented on others PR)
//@@author prachi2023
113 (commented on others PR)
The ParserManager manages the creation of specific parser objects based on the type of command. The parser then makes sense of the user input and calls the respective commands into action.
114 (commented on others PR)
1. Interprets the type of command and creates the respective parser for each command.
115 (commented on others PR)
1. `ParserManager`: Creates a suitable parser, based on the command, to make sense of user message. The respective parsers then make sense of the information and calls the respective commands.
116 (commented on others PR)
💡 Note that the alternate paths in the sequence diagram above are not exhaustive. There is an alternate path for each unique command. As there are too many paths, they are omitted from the diagram. The Command objects in the diagram are used to represent a generic Command object that is created through the Parser. Refer to the next figure for more details.
117 (commented on others PR)
Notes and Events inherit from the abstract class, TaggableObject, and TagManager contains a map of individual unique tags to an ArrayList of TaggableObjects. The TagManager handles the creation, deletion as well as the tagging and untagging of tags from notes or events.
118 (commented on others PR)
### <a id="tag-n"><ins>3.13 Tag/Untag Notes:</ins> `tag-n`</a>
119 (commented on others PR)
💡 If the user tries to tag a non-existing tag to a note, the application will automatically create a new tag, and add the tag to the note.
120 (commented on others PR)
`tag-n /i 1 /tag CS2113`
`tag-n /i 1 /tag CS2113 /tag important`
121 (commented on others PR)
### <a id="tag-e"><ins>3.14 Tag/Untag Events:</ins> `tag-e`</a>
122 (commented on others PR)
💡 If the user tries to tag a non-existing tag to a note, the application will automatically create a new tag, and add the tag to the note.
123 (commented on others PR)
`tag-e /i 1 /tag CS2113`
`tag-e /i 1 /tag CS2113 /tag important`
124 (commented on others PR)
Only tags? Can we do it for events as well?
125 (commented on others PR)
My apologies, I copy-pasted from the change I made for tag-n then forgot to update it.
126 (commented on others PR)
Since this is not part of the code and people refer to the diagram, not so much of this code, so I think can remove all the whitespace (extra lines) since it is inside the enum.
127 (commented on others PR)
💡 Each note has to have a **UNIQUE** title and it is **CASE-INSENSITIVE**.
128 (commented on others PR)
Not sure if the line break is necessary, don't think some of it has? Should probably standardize
129 (commented on others PR)
What is this used for?
130 (commented on others PR)
Yea I realized but I forgot to remove this comment! But yeap thanks!
131 (commented on own PR)
Addressed 👍
132 (commented on own PR)
Will not print, will return a String instead
133 (commented on own PR)
Because I fear if we do just "TAG" the person might assume it is only for 1 tag. What I can do is PREFIX_TAG + " TAG " + PREFIX_TAG + " TAG "... to show that they can add multiple tags? Would that be better?
134 (commented on own PR)
addressed!
135 (commented on own PR)
Yup, good point! Converted
136 (commented on own PR)
Okay, made the changes will push
137 (commented on own PR)
Yup doesn't work. So will not be making this change
138 (commented on own PR)
You are right, my bad! Thanks
139 (commented on own PR)
Could've just returned the string actually
140 (commented on own PR)
Already in the code
141 (commented on own PR)
Will do so with my next PR!
142 (commented on own PR)
Good idea. Will do so (referring to both of your suggestions)!
143 (commented on own PR)
getNotetitle() returned a boolean, I have changed it but I have decided to overload it.
144 (commented on own PR)
This function isn't for me/nor did I create it. Used in DeleteNoteCommand
145 (commented on own PR)
In that case, this function would actually be redundant, could just call the getNoteString directly
146 (commented on own PR)
Discussion taken off GitHub
147 (commented on own PR)
3 MD
148 (commented on own PR)
3 MD
149 (commented on own PR)
No need to check for is archived in my implementation. The note will either be in the archived notebook or in the main notebook. When archiving/unarchiving, the note will be removed and added to the respective notebooks.
150 (commented on own PR)
How is the files being loaded currently? It traverses notes (from notebook) right? Can just make it traverse both notes and archivedNotes?
151 (commented on own PR)
Will add it back in that case
152 (commented on own PR)
Updated, requesting for a final review prior to merging
153 (commented on own PR)
Could have but I just keep it, in case we need it. Can remove it during the code cleanup if confirm not needed
154 (other comment)
A pull request was merged addressing this issue, but did not link the issue to the PR correctly. Hence a need for manual closing of the issue.
155 (other comment)
A pull request was merged addressing this issue, but did not link the issue to the PR correctly. Hence a need for manual closing of the issue.
156 (other comment)
I realized that the test methods did not follow the coding standards. Just make the changes in your next PR 😃
157 (other comment)
Created PERT and Gantt charts.
158 (other comment)
Btw can we add the .log files into gitignore. Everyone can generate their .log file on their own local copy.
Can. will make the changes in my next commit.
159 (other comment)
Closed as completed with PR #102
160 (other comment)
Its fixed on my side. I havent commited.
Noted! Feel free to close the issue when you make the PR.
161 (other comment)
Greater clarity included in the User Guide to address this issue.
@kstonekuan (84 comments)1 (commented on others PR)
LGTM, well done!
2 (commented on others PR)
Thanks for helping me to remove this, forget to do it on my side!
3 (commented on others PR)
Hey, I think we might as well just keep the interfaces for easy reference to the behaviors
4 (commented on others PR)
Looks good! Might be good to add some JUnit tests for this class now even if they just assert true for now, just to keep in mind our desired behavior for each method
5 (commented on others PR)
Good use of packages
6 (commented on others PR)
Good catch, forgot to include this.
7 (commented on others PR)
I think this one may have to be "options" as it is a collection. When we call an instance of the OptionList we can probably call that optionList
8 (commented on others PR)
Good idea but may be redundant as we can call "length()" on the ArrayList
9 (commented on others PR)
Thanks for adding this for me
10 (commented on others PR)
Thanks for changing this LGTM
11 (commented on others PR)
Thanks for moving this for me
12 (commented on others PR)
Maybe we can move this into the "quiz" case next time so we don't check for the command twice
13 (commented on others PR)
Remember to initialize this next time as well
14 (commented on others PR)
sorry I mean to comment on ui, didn't know the top part got included
15 (commented on others PR)
Thanks for adding this but would be good to use a separate branch next time
16 (commented on others PR)
Good idea to separate these responsibilities to two different classes
17 (commented on others PR)
I see what you are trying to do here but is there a reason for this class to be different from the other displayables and do we need this extra method?
18 (commented on others PR)
I think you should try not to depend on this class in to create the QuizQuestionList object as this violates SRP
19 (commented on others PR)
Why does this not implement DisplayableList, maybe can change the way we think of and name this class?
20 (commented on others PR)
Good update! Did you managed to test the other commands with IO testing also?
21 (commented on others PR)
Looks good!
22 (commented on others PR)
Will try to abstract this into another class, thanks for implementing with this for now
23 (commented on others PR)
You can load from the test storage data/test/example.json if you do not want to create the topic for this test
24 (commented on others PR)
Thanks for changing this, forgot to account for wrong commands
25 (commented on others PR)
Good use of assertions
26 (commented on others PR)
Good SRP
27 (commented on others PR)
Good idea maybe we can add this to the other DisplayableList classes
28 (commented on others PR)
Sorry need this to be one word something like Java_Basics for the parser
29 (commented on others PR)
Thanks for changing this
30 (commented on others PR)
Cool idea to add the number of questions
31 (commented on others PR)
Nice, good to check our exceptions
32 (commented on others PR)
Good use of assertions
33 (commented on others PR)
Useful warning log, great!
34 (commented on others PR)
Good idea to log this but maybe using constants can help since most of the words in these strings are the same. Will open an issue to use more OOP for v2
35 (commented on others PR)
good idea to protect this
36 (commented on others PR)
good slap
37 (commented on others PR)
Good placeholder
38 (commented on others PR)
Thanks for changing this
39 (commented on others PR)
Good use of the interface
40 (commented on others PR)
Nice description of the implementation for the parsing
41 (commented on others PR)
May have to standardise our headers later
42 (commented on others PR)
Good work on this class diagram
43 (commented on others PR)
good work on this sequence diagram
44 (commented on others PR)
I think the first one is repeated now because I added it previously but thanks for adding all of the rest
45 (commented on others PR)
You can take out add, delete and the empty constructor as I think @joelngyx is working on removing them from our code
46 (commented on others PR)
This header isn't showing up properly I think you need to add a space after the # , noticed this in a few other places as well
47 (commented on others PR)
I think you are missing the interface label for DisplayableList and Displayable. Some of the arrows are also out of place and arrowheads missing so you might want to check the diagram again.
48 (commented on others PR)
Might want to split this as it may be confusing. Also not sure if you should be returning control to each class instead?
49 (commented on others PR)
nice javadocs
50 (commented on others PR)
Nice solution to allowing the number of questions and topic name to be swapped.
51 (commented on others PR)
Thanks for putting this placeholder, will try to get it done soon
52 (commented on others PR)
Nice formatting
53 (commented on others PR)
Good idea to make the usage clearer
54 (commented on others PR)
I think this is ok for now, i will add in a storage system to load the bookmarks along with notes
55 (commented on others PR)
this one as well may have to create a User class to include notes next time but for now it seems fine
56 (commented on others PR)
I think for this you can call execute on the command and then just assertTrue(true) which represents that the the execute doesn't enter a loop since a bad topic was given
57 (commented on others PR)
same as above
58 (commented on others PR)
Nice! Thanks for changing this
59 (commented on others PR)
Good idea to abstract this
60 (commented on others PR)
I know this is a draft but you should probably be taking the TopicList in the constructor
61 (commented on others PR)
Nice, good implementation of this feature
62 (commented on others PR)
Looks good but there seems to be a random * in the top right area of the diagram
63 (commented on others PR)
Nice diagram
64 (commented on others PR)
Good explanation of the implementation
65 (commented on others PR)
Good use of visual aids
66 (commented on others PR)
Thanks for rewording this, alot clearer
67 (commented on others PR)
Well done updating the UserStorage to match your Note changes
68 (commented on others PR)
Nice use of constants
69 (commented on others PR)
Good update to the user guide, not sure if these sections should be nested under a notes feature
70 (commented on others PR)
Good idea to let users choose their timing but I think you need to update this message to match and change the input file to start up the quiz correctly
71 (commented on others PR)
good idea to make this new command for timer timeout
72 (commented on others PR)
Good idea, will have to change userstorage a bit to accomodate this as well
73 (commented on others PR)
looks good, nice formatting
74 (commented on others PR)
Nice, makes it alot clearer
75 (commented on others PR)
Nice improvement to code coverage
76 (commented on others PR)
Good addition to the junits
77 (commented on others PR)
Good use of javadocs to make the method purpose clear
78 (commented on others PR)
Nice addition to the code coverage
79 (commented on others PR)
Good change
80 (commented on others PR)
Nice javadocs
81 (commented on others PR)
Good catch about the timer
82 (commented on others PR)
I think the method calls a bit wrong as you should point to the object that is called. Liked question.getInnerList() should call on a question object and getInnerList() should call on a questionList object
83 (commented on others PR)
cool change, no need to update this everytime anymore
84 (commented on others PR)
would be good to add some screenshots here
85 (commented on own PR)
Done thanks
86 (commented on own PR)
Yes sorry thanks, need to get out tests up quickly to catch these mistakes
87 (other comment)
Sorry I implemented this in #13 as it will load and parse the JSON from the file before passing everything as our own objects
88 (other comment)
Did you finish this in your pull request #34 or are there still more methods you are implementing? Remember to add your Junit tests also
89 (other comment)
Was this done in your pull request #22 ?
90 (other comment)
Need to make sure it works with a hintCommand
91 (other comment)
Good idea to maintain SRP
92 (other comment)
Done in #53
93 (other comment)
Done in #59
94 (other comment)
Done in #71
95 (other comment)
Done in #71
96 (other comment)
Done in #71
97 (other comment)
remember to update storage and the json
98 (other comment)
Forget this, dw do alr
99 (other comment)
For easy reference to first version:
Class diagram:
Sequence diagram:
100 (other comment)
remove from functionalities
101 (other comment)
remove functionality
102 (other comment)
Saw that removing these methods disrupts some Junit tests, you can either construct using an arraylist for those tests or load from the test json. If this takes too long work on the ugdg first and we can get this up a bit later!
103 (other comment)
I think you should move the exceptions higher up so it doesn't reach this assertion
104 (other comment)
Done in #126
105 (other comment)
Decided to keep IO testing as backup
106 (other comment)
Being done as UG is updated
107 (other comment)
done in #136
108 (other comment)
closed by #121
109 (other comment)
same as #176
110 (other comment)
for this one maybe must make it clear that once u use a hint u can never score 100%?
111 (other comment)
same as #189
112 (other comment)
same as #188
113 (other comment)
How did they select 6 questions for this? @Zhi-You
@sevenseasofbri (61 comments)1 (commented on others PR)
Consider removing this.
2 (commented on others PR)
public String toString() {
3 (commented on others PR)
public Resistor(double value) {
4 (commented on others PR)
Consider changing this to Resistor object
5 (commented on others PR)
package seedu.duke.component;
public class PowerSource {
private static final String SI_UNIT = "V";
public PowerSource(double value) {
super(value);
}
/**
* Returns the value and unit of PowerSource object.
*
* @return String of Power Source value
*/
@Override
public String toString() {
return (value) + SI_UNIT;
}
}
6 (commented on others PR)
The lack of a newline is causing checkStyle error
7 (commented on others PR)
Perhaps the name otherValue is a little less intuitive? Consider naming it valueToBeAdded or something along those lines.
8 (commented on others PR)
Unsure of the purpose of the ui object in this function
9 (commented on others PR)
I see. Okay it's alright then
10 (commented on others PR)
Ohh okie alright gotcha
11 (commented on others PR)
Yup was thinking of setters, wasn't sure whether I should add. Will add after tdys meeting!
12 (commented on others PR)
While I know having break statements out here is kind of useless but does this violate coding standard? https://se-education.org/guides/conventions/java/basic.html#layout
13 (commented on others PR)
Was going to ask about if the current template wasn't set, but saw this. This makes sense!
14 (commented on others PR)
Oh wow that's...interesting
15 (commented on others PR)
Quite interesting that you added this to gradle properties to be able to render Ω, μ. Hadn't thought of this before!
16 (commented on others PR)
Consider changing the array name to a plural like templates? https://se-education.org/guides/conventions/java/basic.html#naming
String[] templates = {"r", "rl", "rc", "lc"};
17 (commented on others PR)
If you commit the previous suggestion you'll have to change this too:
for (String s : templates) {
18 (commented on others PR)
Same with this collection of values:
String[] effValues = {"reff", "leff", "current", "power"};
19 (commented on others PR)
for (String s : effValues) {
20 (commented on others PR)
Nice
21 (commented on others PR)
Great description!
22 (commented on others PR)
Interesting!
23 (commented on others PR)
Any particular reason as to why you declared these as final? Because when a variable is declared with final keyword, its value can’t be modified, essentially, a constant.
24 (commented on others PR)
Here as well.
25 (commented on others PR)
Yup it will work, but the point of declaring it as final is sort of nullified
26 (commented on others PR)
The test for this method in the RcTemplate_Test will not run because it tries to catch DukeException but the assert keyword throws a different kind of execption.
27 (commented on others PR)
Might consider removing this, since it is already tested by JUnit?
28 (commented on others PR)
Fair, then might have to make the names capitalized right
29 (commented on others PR)
Nice! Might have to add rigorous tests for this later on.
30 (commented on others PR)
Nice
31 (commented on others PR)
Good use of generics!
32 (commented on others PR)
Seems to be an unresolved merge conflict in this file. Might want to edit this file.
33 (commented on others PR)
This is already tested in a JUnit test under AddCommand test, hence will cause a build gradle error. Consider removing this.
34 (commented on others PR)
Not sure if tested through JUnit, but if build gradle fails checks again after removing the other statement, then this is likely causing the issue too.
35 (commented on others PR)
Any particular reason for including so many blank newlines haahaha
36 (commented on others PR)
Same with this statement. I think avoid asserting in this function (even in the other classes) since it is kind of already taken care of by exception handling. The program will terminate in case the user enters an incorrect component
37 (commented on others PR)
Update: Consider removing this
38 (commented on others PR)
Hmm consider naming it SPACES? Since we could change the number of spaces if required later on without having the name become obsolete
39 (commented on others PR)
Interesting, what does this dependency do?
40 (commented on others PR)
:0 gotta remove lah
41 (commented on others PR)
Will have to change the gates to this kind of structure
42 (commented on others PR)
Nice!
43 (commented on others PR)
What is this file for?
44 (commented on others PR)
We could assert that the logic will not call anything out of bounds?
45 (commented on others PR)
Yup, sounds good!
46 (commented on others PR)
Good eye
47 (commented on others PR)
What is xand? Isn't it called xnor..? (・–・;)ゞ
48 (commented on others PR)
Idk if this matters but there's a typo in sequence
49 (commented on others PR)
Ohh lol I see
50 (commented on others PR)
The CLIrcuit Assistant thing, I had removed the logo because of runtest. However, forgot to put it back..
51 (commented on others PR)
Err I'm not sure but why is this summary table in TutorialCircuitCommand?
Can use the summary table from SummaryCommand, perhaps create an object of SummaryCommand and print it?
52 (commented on others PR)
Wait.. this will print once the person goes through 8 commands, and then print again because 8 > 6 commands done
53 (commented on others PR)
Perhaps could have added Current Voltage printed after the template?
54 (commented on others PR)
I don't think we need to instantiate anymore since we are inheriting SummaryCommand here
55 (commented on others PR)
Can remove this also
56 (commented on others PR)
BTW should we add this before the binarytree part? Because I've referenced Gates and all in that section
57 (commented on others PR)
bad
58 (commented on others PR)
So many spaces :0
59 (commented on others PR)
However, such an approach allows users to add...
I'm not quite sure whether this would be an issue since we could constrain the user from adding certain components to the circuit. Perhaps you could say that a Linked List would not be able to simulate a proper closed circuit-like system, therefore was not chosen...?
60 (commented on others PR)
Lol the random π at the end
61 (commented on others PR)
Also, since we talk about adjacency matrix here, consider calling the implementation "Graph with Adj Matrix" or something since an adj matrix is a way to rep a graph.
Also will have to add the term Adjacency Matrix to the glossary.
62 (commented on own PR)
Yup! Good idea
63 (commented on own PR)
Okay will do!
64 (commented on own PR)
Yup I'll add it
65 (commented on own PR)
Noted! Will add in all getters.
66 (commented on own PR)
So, remove the else and break; in the if block? Will break work for a method to return to call.. or should I just empty return;?
67 (commented on own PR)
Yup noted. I didn't see that before.
68 (commented on own PR)
I see. Yup, that makes sense!
69 (commented on own PR)
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
70 (commented on own PR)
CalculateCommand c = new CalculateCommand(LC_TEMPLATE, CAPACITANCE);
assertDoesNotThrow(() -> c.execute(UI));
71 (commented on own PR)
assertDoesNotThrow(() -> c.execute(UI));
72 (commented on own PR)
CalculateCommand c = new CalculateCommand(LC_TEMPLATE, CAPACITANCE);
assertDoesNotThrow(() -> c.execute(UI));
73 (commented on own PR)
Good idea, will do
74 (commented on own PR)
Yup alright
75 (commented on own PR)
Will try, was getting errors with the fancy fonts (tutorial mode) and table for command summary
76 (commented on own PR)
Then this thread will terminate execution and jump out of the help mode. _'
77 (commented on own PR)
Okay fair, I'll move it
78 (commented on own PR)
Oops I had initially made it byte then changed everything else to int. Seemed to have missed this one out. Thanks for pointing out!
79 (commented on own PR)
Actually, the list is initally populated with 16 null values, so technically we gotta check for if the 1st value is null. Might have to change the isEmpty() function.
80 (commented on own PR)
Noted. So I add set output as a separate fn right?
81 (commented on own PR)
Good idea, will do.
82 (commented on own PR)
Hmm, makes sense
83 (commented on own PR)
Oh no oops, perhaps I'll add it in a next PR?
84 (commented on own PR)
Accidently got added cuz intellij optimised the imports lol
85 (commented on own PR)
Yup yup had mentioned when i created the PR:
Have to update runtest.bat with apt commands.
86 (commented on own PR)
Lol didn't notice this. Good eye
87 (commented on own PR)
Couldn't think of a good way to generalise the tutorial command whilst also splitting between the two kinds of circuits. Since the both the classes already inherited from BooleanCommand/CircuitCommand I thought the only way we could define the characteristics of a TutorialCommand and implement was through an interface (oof)
88 (commented on own PR)
89 (commented on own PR)
@hughjazzman I might be able to add a function declaration here (startTutorial()), I guess I add it in another PR, or ?
90 (commented on own PR)
Okie sure
91 (commented on own PR)
Oof sozz should've informed you
92 (commented on own PR)
You're right! And I was thinking the same, just kept it in case it would be used somewhere else...should I remove it?
93 (commented on own PR)
Okay yep
94 (commented on own PR)
Good idea! Will do that.
95 (commented on own PR)
Noted
96 (commented on own PR)
I see, however since this is recursive, the Gate object will continuously be created again and again right...not sure if that's entirely a bad thing
97 (commented on own PR)
Okay I'll change and see
98 (commented on own PR)
okay noted
99 (commented on own PR)
OH NO i put it after lmao
100 (commented on own PR)
okie
101 (commented on own PR)
wdym?
102 (commented on own PR)
we need to check the circuit tutorial right
103 (commented on own PR)
fml
104 (other comment)
Perhaps JavaDoc to be added, but other than that LGTM.
Ohh right I forgot. I'll do it.
105 (other comment)
Ok will add this
106 (other comment)
Finally -_-
107 (other comment)
Okay sounds good!
108 (other comment)
OHMYGOSH IT FINALLY PASSED
109 (other comment)
Task Assignment:
Package | Person
-- | --
Command | @sevenseasofbri HelpCommand, CalculateCommand, AddCommand, SummaryCommand
Command | @dorianfong98 ExitCommand, SetCommand, Command, TemplateCommand
Component | @oasisbeatle
Parser | @hughjazzman
Template | @PraveenElango
110 (other comment)
LGTM!
111 (other comment)
LGTM, will need JavaDoc and maybe a comment showing the format of the
printTree?
Yup can, I'll do that
112 (other comment)
Just realised the name printTree is sort of misleading since the function really just modifies the 'tree' variable and really doesn't print the tree. Will change the name.
113 (other comment)
Sexy UML diagrams.
LMAO DHSFBJEFKERF
114 (other comment)
BTW I'll add the glossary after everyone has added their parts to the dev guide!
115 (other comment)
Will be done through CalculateCommand
116 (other comment)
117 (other comment)
Can @oasisbeatle or @dorianfong98 do a short write-up for
CircuitTemplateand @sevenseasofbri or @dorianfong98 do one forBinaryTree?
Okie I'll do it
118 (other comment)
Also you gotta update expected and unix expected files so that the runtests pass
119 (other comment)
Yo I'll add this soon before class perhaps
120 (other comment)
no
121 (other comment)
gg
122 (other comment)
Add Introduction to concepts.
Add label for images.
Explain bullet points used at each command.
Add numberings for section headers.
Add clear instructional steps for each command.
Add diagrams/formatting/colours/arrows/tips for each command.
Add glossary (optional).
123 (other comment)
LGTM, should we use the
{\:toc}mentioned here: nus-cs2113-AY2021S1/forum#108 (comment)
Yeah I think we should try it out. I'll try add it now.
124 (other comment)
Lol I don't think I'm doing this properly
125 (other comment)
Hi @nishanthelango thanks for the review! 😄 About this diagram:
Yup it's supposed to be a solid line, thanks for pointing out! I just wanted to ask if this notation is ok for object creation in sequence diagrams, because I can't seem to find a way to do it the way it's been specified in the textbook when I use PlantUML.
(Update: I'll still look around though, I'm kinda new to PUML lol)
126 (other comment)
@nishanthelango OHH thank you so much! (I should've looked at the docs better oof) 😄
127 (other comment)
Yo we gotta do this too I forgot abt this
128 (other comment)
@PraveenElango could you add in printing the voltage + circuit since you worked on UI last iter
129 (other comment)
There is no series parallel V - must put in UG documentation. As for L- i think it is working fine. @hughjazzman you're doing add command for the UG so probably mention that
130 (other comment)
GUI Constraint gotta mention that the simplified circuit is shown in the UG. @AY2021S1-CS2113T-W13-3/developers
131 (other comment)
Must be clearer in the Docs I suppose @AY2021S1-CS2113T-W13-3/developers
132 (other comment)
Not a functionality bug. But must specify what can be added to a template in the UG. @hughjazzman @dorianfong98 since you guys are doing add and template command respectively
133 (other comment)
UG error:
@hughjazzman u taking care of add component so perhaps change this
134 (other comment)
Update instructions on how to use tutorial command, explain how it will remain in a loop unless you decide to exit. @oasisbeatle
135 (other comment)
Summary command is literally the 1st thing in the UG. But might have to include diagrams I suppose. @AY2021S1-CS2113T-W13-3/developers
136 (other comment)
Need to remove help from quickstart and other places:
@AY2021S1-CS2113T-W13-3/developers
137 (other comment)
No additional functionalities will be added post v2.0 right. @AY2021S1-CS2113T-W13-3/developers
138 (other comment)
@oasisbeatle we need to make the UI for the tutorial commands more intuitive. And also add that to the documentation.
139 (other comment)
Need to improve UG section on tutorial command. @oasisbeatle
140 (other comment)
Yo this is a good suggestion. @hughjazzman might wanna change it to this?
141 (other comment)
Don't think this should be too much of an issue? Because the template command needn't care about the parts after. @AY2021S1-CS2113T-W13-3/developers
142 (other comment)
No features to be added after v2.0. Man, what's the deal with people wanting to store circuits lol. @AY2021S1-CS2113T-W13-3/developers
143 (other comment)
Ok gotta improve the tutorial commands @oasisbeatle and I
144 (other comment)
Improve tutorial to produce apt error messages @oasisbeatle and I
145 (other comment)
Summary diagram can have better examples rather than parameter table and command table @AY2021S1-CS2113T-W13-3/developers
146 (other comment)
Need to document the templates better @dorianfong98 since you doing template command for UG
147 (other comment)
Err might have to make the tutorial instruction clear.
148 (other comment)
Lol gotta add a space at the top @AY2021S1-CS2113T-W13-3/developers
149 (other comment)
Right same as #136
150 (other comment)
UG had mentioned this right? Might have to update the add command to show relevant error @hughjazzman
151 (other comment)
Customise exceptions for our respective commands @AY2021S1-CS2113T-W13-3/developers
152 (other comment)
This is a bit concerning. Might have to add a check @hughjazzman
153 (other comment)
#148
154 (other comment)
#148
155 (other comment)
This is concerning and I will look into this.
156 (other comment)
This is concerning, I'll look into this
157 (other comment)
@hughjazzman agreed
@neojiaern (55 comments)1 (commented on others PR)
Perhaps you could refer to the MESSAGE_USAGE in ReviseCommand?
2 (commented on others PR)
Could perhaps separate these into its respective command files like what was done for revise.
3 (commented on others PR)
Would it be better to include "edit" inside the method name? (e.g. showCardContentBeforeEdit) as it is only for the edit command
4 (commented on others PR)
Perhaps the MESSAGE_USAGE could be included after the error message?
5 (commented on others PR)
Perhaps the MESSAGE_USAGE could be included after the error message?
6 (commented on others PR)
Not necessary to specify date when adding cards
7 (commented on others PR)
Date parameter is not needed as it will be initialised in Card class
8 (commented on others PR)
Not necessary to specify date.
9 (commented on others PR)
Not necessary to specify date
10 (commented on others PR)
Perhaps this is not needed?
11 (commented on others PR)
Maybe you could add a separate function which is similar to this and call it for saving of tasks into file.
12 (commented on others PR)
Perhaps could also include previous interval too when loading from file
13 (commented on others PR)
Perhaps MESSAGE_USAGE could be removed as the command is correct but chapter is not found?
14 (commented on others PR)
Would it be better to have a general method for the chapter and module each, then pass the message to that method?
15 (commented on others PR)
Should this be done in Storage?
16 (commented on others PR)
Should this be done in storage?
17 (commented on others PR)
Need this to be int for assertion
18 (commented on others PR)
Need this for assertion
19 (commented on others PR)
Perhaps could also add MESSAGE_USAGE like other commands?
20 (commented on others PR)
Perhaps could use ui.showToUser as well. And could maybe change to "Command entered: " instead? As some commands may be invalid.
21 (commented on others PR)
Perhaps could close scanner here?
22 (commented on others PR)
Perhaps could use ui.showToUser or create a method specifically for printing these in Ui?
23 (commented on others PR)
Perhaps "Lists the revision completed in ..." would be better?
24 (commented on others PR)
Perhaps you could include a message for the exception?
25 (commented on others PR)
Could include error message for exception here
26 (commented on others PR)
Could include error message for exception here
27 (commented on others PR)
Perhaps you could pass ui from Kaji to this method and call ui.showToUser and ui.showError instead of using System.out.println?
28 (commented on others PR)
Maybe could refer to the constants EASY/MEDIUM/HARD instead of using integers for the switch case?
29 (commented on others PR)
Perhaps could change this into one message and denote easy/medium/hard with %1$s and pass the type of difficulty into string format
30 (commented on others PR)
Perhaps could use "Shows" to standardise with the message usage of other commands
31 (commented on others PR)
May consider changing this to toLowerCase and use the constants instead of string literals for switch case or changing the constants to uppercase.
32 (commented on others PR)
Could change this to "Rates" to standardise with other commands
33 (commented on others PR)
Is it possible to throw exception or return this message to execute so that System.out.println is not called at other places other than execute function?
34 (commented on others PR)
Perhaps could return this to execute and do ui.showToUser there
35 (commented on others PR)
Is there a reason why "this" needs to be used? Or setRating is sufficient?
36 (commented on others PR)
Perhaps return rating would be sufficient?
37 (commented on others PR)
Perhaps could use caps for parameters
38 (commented on others PR)
Perhaps could refactor these into constants?
39 (commented on others PR)
Could include message usage here also
40 (commented on others PR)
Could include message usage here
41 (commented on others PR)
is it possible to return the thing you want to print to the execute method and call ui from there? For the methods below as well.
42 (commented on others PR)
Could change to use of out.print
43 (commented on others PR)
Perhaps could refactor these as constants?
44 (commented on others PR)
Maybe can use Messages.CHAPTER instead?
45 (commented on others PR)
Would this not be needed since it is already checked in parser?
46 (commented on others PR)
Would this not be needed since it is already checked in the parser?
47 (commented on others PR)
Would this not be needed since it is already checked in parser?
48 (commented on others PR)
Perhaps this may not be needed?
49 (commented on others PR)
Perhaps can just use the COMMAND_WORD from ListCommand
50 (commented on others PR)
Perhaps can just use the COMMAND_WORD from ListCommand
51 (commented on others PR)
Perhaps can just use the COMMAND_WORD from ListCommand
52 (commented on others PR)
Perhaps can change flashcards to %ss (extra s for the word) in ListCommand and when you use this message, Stringformat with the type Messages.CARD
53 (commented on others PR)
Perhaps can change chapters to %ss in ListCommand and when you use this message, Stringformat with the type Messages.CHAPTER
54 (commented on others PR)
Perhaps can change chapters to %ss in ListCommand and when you use this message, Stringformat with the type Messages.CHAPTER
55 (commented on others PR)
if the list command is already separated out, are these two methods still needed?
56 (other comment)
Already implemented
@wamikamalik (47 comments)1 (commented on others PR)
Is there a reason why a new scanner is being declared every time a command is taken in? I believe this works the same way as our previous approach right?
2 (commented on others PR)
Is it necessary to have such a test? 🤔 getCommand() just calls the nextLine() function of scanner class. So by writing this test, we are essentially testing the nextLine() function which has not been written by us.
3 (commented on others PR)
Is this package being imported because of the BusStops being set in the array?
Can this be removed?
4 (commented on others PR)
Nice to have this getter here! Ensures that only minor changes will be needed for other features that made use of the route arrays. (hopefully 🤞 )
5 (commented on others PR)
6 (commented on others PR)
Maybe you can print out only the 1st and the last stop of the buses here with a "..." in the middle.
7 (commented on others PR)
Oh yah! Okie!
8 (commented on others PR)
Is this for future changes? Will the current program work without this?
9 (commented on others PR)
I was wondering if the getCommand() of Ui can be used here. Just to avoid declaring a separate Scanner.
String userBusRouteSelection = Ui.getCommand().trim().toLowerCase();
10 (commented on others PR)
public class RouteMapCommand extends Command{
11 (commented on others PR)
This class was removed in a previous commit. You might have to update your PR to reflect the new code and make changes accordingly.
PS: There will be more changes required once #28 is merged but those should be minor
12 (commented on others PR)
Once you change the code according to the new classes handling bus data, you would still have a similar function that returns the bus route. I suggest you shift the printing to Ui class. See #26 for an example.
13 (commented on others PR)
You may want to remove this class since it is not being used.
14 (commented on others PR)
Since you have just one test, using createBusList() here is ok. If you have more than one tests for BusData, remember that calling it again might cause duplicate entries in the list.
A possible way to do such initialization is using a @BeforeAll method.
15 (commented on others PR)
This is something I found from my research. Do let me know if there is a better alternative!
16 (commented on others PR)
Nice! Using for loop makes the code look neater.
17 (commented on others PR)
Another way to do this would be to store lower case names in stopNames and then use contains() and getIndexOf() functions.
18 (commented on others PR)
Nice function you have there! Can be implemented in the code for other features as well.
19 (commented on others PR)
can this import be removed?
20 (commented on others PR)
Okie! Yah, I realized it wasn't running!
21 (commented on others PR)
import seedu.duke.logic.commands.BusCommand;
import seedu.duke.logic.commands.Command;
import seedu.duke.logic.commands.RouteCommand;
import seedu.duke.logic.commands.RouteMapCommand;
import seedu.duke.logic.commands.ExitCommand;
import seedu.duke.logic.commands.HelpCommand;
import seedu.duke.logic.commands.AllBusCommand;
import seedu.duke.logic.commands.ListStopsCommand;
22 (commented on others PR)
public class ListStopsCommand extends Command {
23 (commented on others PR)
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.assertFalse;
24 (commented on others PR)
no tab here
Kent Ridge MRT Station-> Opp University Health Centre-> University Town
25 (commented on others PR)
PGP-> Kent Ridge MRT Station-> Opp University Health Centre-> Yusof Ishak House-> Central Library-> Kent Ridge-> Museum-> University Town-> University Health Centre-> Opp Kent Ridge MRT station-> PGPR
26 (commented on others PR)
PGP-> Kent Ridge MRT Station-> Opp University Health Centre-> Yusof Ishak House-> Central Library-> Kent Ridge-> Museum-> University Town-> University Health Centre-> Opp Kent Ridge MRT station-> PGPR
27 (commented on others PR)
PGP-> Kent Ridge MRT Station-> Opp University Health Centre-> University Town-> Raffles Hall-> Kent Vale-> EA-> NUS IT-> University Health Centre-> Opp Kent Ridge MRT station-> PGPR
28 (commented on others PR)
Might not want to add assertions to a public method
29 (commented on others PR)
Wondering if we want to move it to a different class like #57
30 (commented on others PR)
Can this be refactored into another function or maybe a function in Ui?
31 (commented on others PR)
Okie!
32 (commented on others PR)
logger.log.2
logger.log.3
logger.log.4
33 (commented on others PR)
34 (commented on others PR)
* [3.3.Check for buses at a bus stop: ```/bus```](#33-check-for-buses-at-a-bus-stop)
35 (commented on others PR)
Would it be better to call the Ui method to print the message here instead?
36 (commented on others PR)
I see, okie!
37 (commented on others PR)
Can you push this to above /descfav?
38 (commented on others PR)
Introducing **Nav@NUS**, your new navigation assistant!
39 (commented on others PR)
I think the bus routes have BTC bus stops oso?
40 (commented on others PR)
Yah
41 (commented on others PR)
where you have to type in commands.<br>
42 (commented on others PR)
Maybe remove the figure numbers for now, since we removed it from other places also, if the figure is right below the content
43 (commented on others PR)
shown in the figure, the home folder is found in the address path of "C:\Users...\CS2113T Empty folder".<br>
44 (commented on others PR)
45 (commented on others PR)
6. Your screen should show the start screen of Nav@NUS as seen in the following figure.<br>
46 (commented on others PR)
47 (commented on others PR)
System.out.println("Oh no! Some of the data in FavList.txt seems to have been corrupted.\n"
+ "Most corrupted data has been removed :)");
48 (commented on own PR)
Great catch!
49 (commented on own PR)
Oops!
50 (commented on own PR)
Oh no! We missed that
51 (commented on own PR)
Comment not required
52 (commented on own PR)
Hahah, okie! I will push these changes in a new commit!
53 (commented on own PR)
Okie! I will follow that approach.
54 (commented on own PR)
Thank you for the feedback!
55 (commented on own PR)
Oh yes! That's a better way to do it.
56 (commented on own PR)
Sure! I was wondering if those should be added if and when they are being used...
57 (commented on own PR)
BusStops.PGP,
BusStops.KENTRIDGEMRTSTATION,
BusStops.OPPUNIVERSITYHEALTHCENTRE,
BusStops.YUSOFISHAKHOUSE,
BusStops.CENTRALLIBRARY,
BusStops.KENTRIDGE,
BusStops.MUSEUM,
BusStops.UNIVERSITYTOWN,
BusStops.UNIVERSITYHEALTHCENTRE,
BusStops.OPPKENTRIDGEMRTSTATION,
BusStops.PGPR
58 (commented on own PR)
isValidBusStop accounts for it. So this is redundant
59 (other comment)
Minor change needed for parser class so that the child classes can make use of splitCommand() method
60 (other comment)
I realized that this will effect other features involving the use of the bus route array in main. We should remember to make appropriate changes in other pull requests that are open
61 (other comment)
Since #13 is linked to a different feature, you might want to create a new issue solving a different user story. For example, "As a forgetful person, I would like to know which buses are available in my zone, so that I can avoid entering the wrong bus."
62 (other comment)
Need to add more tests to account for the new command classes added.
63 (other comment)
Is this supposed to fix the issue #18 ?
64 (other comment)
Seems that this issue should have been closed already!
65 (other comment)
This issue has be resolved.
66 (other comment)
Issue can be closed now!
67 (other comment)
Also contributes to #54
68 (other comment)
Fixed by #59
69 (other comment)
Fixed by #52
70 (other comment)
Fixed by #69
71 (other comment)
working towards issue #55
72 (other comment)
fixed by #122
73 (other comment)
Can we close this issue now?
74 (other comment)
Done!
75 (other comment)
fixed by #136 #137
76 (other comment)
Might have to pull from master 1st. I have updated /descfav. Not reflected here
77 (other comment)
Thank you for the feedback! Will work on these soon!
All diagrams have been drawn using plantUML. The .puml files are all stored in docs/DG_Figures/
78 (other comment)
Your most frequently typed bus stop name is displayed when you restart the application
But it is a good point, we must make a clearer mention of it in the user guide. @Johnson-Yee
79 (other comment)
I think we have this exception handling issue open for freqList.txt.
Need to add this for favList.txt as well! @EthanWong2212
80 (other comment)
This command is meant to be like a search filter (the way you would search for documents in your folder), so that users do not have to look around for correct faculty names. But this may get a bit confusing for a few users. @mrwsy1 what is your take on this?
81 (other comment)
Will consider adding that in! Requires a bit of thought as some stops have a few common names which would have to be accounted for.
82 (other comment)
parameters "only" was not mentioned. This was a statement catering to notes about parameters. But we should consider including the same for commands as well since some users may find it confusing.
83 (other comment)
Same as #175
84 (other comment)
Good point!
85 (other comment)
To be changed!
86 (other comment)
Same as #175 and #169
87 (other comment)
work in progress
88 (other comment)
Good point!
I think we can leave such prompts out of the output of commands?
ahaha sure! the easier way out 😉
89 (other comment)
same as #173
90 (other comment)
we might have to implement our previous idea (isValid) @Lezn0 your thoughts?
91 (other comment)
Same as #162
92 (other comment)
Was changed a few hours before the PED. refer to this link
@Zhi-You (46 comments)1 (commented on others PR)
Great job!
2 (commented on others PR)
Oh this is a nice addition!
3 (commented on others PR)
Good way to avoid magic literals!
4 (commented on others PR)
Thanks for this! I think this implementation makes more sense!
5 (commented on others PR)
Oh right! My mistake on the primitive versus object type for the boolean variable! Thanks for helping me edit that!
I think the new naming you have here is much clearer too!
6 (commented on others PR)
Great work! I think the logic is fine for the quiz implementation!
7 (commented on others PR)
I think we can implement the parseAnswer that we currently have in the Quiz class into here in future! But this will work for v1.0.
8 (commented on others PR)
Quiz object should be constructed in future but this will work for v1.0!
9 (commented on others PR)
I think it is better if the parser class and its interface could be packaged into their own package, which can be called parser
10 (commented on others PR)
Great implementation for v1.0! Do take note that we have to handle the case where the input provided by the user is unfavorable though, such as if the input length is not 3.
11 (commented on others PR)
Wow! This looks great!
12 (commented on others PR)
Do you think making this into an abstract class would be better than an interface because other command classes will eventually inherit from it instead of just specifying the behaviour?
13 (commented on others PR)
Nice! I think this implementation is great!
14 (commented on others PR)
Thanks for this! It enhances cohesion between hint and question!
15 (commented on others PR)
Thanks for this too! The flag will now correspond to whether the question was shown to the user or not.
16 (commented on others PR)
Understand the reason for this! For future versions we will be able to handle multiple-topic quiz.
17 (commented on others PR)
I think this should be add instead too!
18 (commented on others PR)
Since optionList is unused here, do you think the execute method's parameters in the Command abstract class can be changed?
19 (commented on others PR)
I understand that you have incorporated question.markAsShown() function into the getDescription method of question now, however I feel that we should separate them out to enhance SoC and cohesiveness for the method. Will be doing that and hence for this part over here, the questions will have to be marked as shown separately.
20 (commented on others PR)
Just a suggestion, but I think what you have now works too! The suggestion is just something to think about for future implementations!
21 (commented on others PR)
Remember to remind @anqi20 about this again @josephhhhhhhhh !
22 (commented on others PR)
Great! Looks like a working product is right on the way!
23 (commented on others PR)
Logic seems great for this class!
24 (commented on others PR)
Naming of tests are great!
25 (commented on others PR)
Thanks for helping the team with this change!
26 (commented on others PR)
Thanks for this! Careless mistake on my part haha.
27 (commented on others PR)
Do you think this might be better if phrased as "Please enter in 'help' to get the list of available commands." ?
28 (commented on others PR)
I think for all new lines we should use System.lineSeparator() instead as it will ensure that it works for any OS.
29 (commented on others PR)
Great job!
30 (commented on others PR)
Can add a new line between the two parts but great job nonetheless!
31 (commented on others PR)
I think these should not be returning new IncorrectCommands but should be using the ui to print the error instead. the IncorrectCommand will not be executed too.
32 (commented on others PR)
Great job! Thanks for changing this!
33 (commented on others PR)
Thanks for changing this too!
34 (commented on others PR)
Great work! Logic seems fine to me!
35 (commented on others PR)
Yup, I agree! I think most of us will have to do that too and that could fall under an issue for v2.0.
36 (commented on others PR)
Great job chaining the exceptions!
37 (commented on others PR)
Looks good with the naming!
38 (commented on others PR)
Thanks for adding this in! Looks good!
39 (commented on others PR)
Not very sure if you need the arrows that do not correspond to a method call or not. Also, the return values should be dashed lines.
40 (commented on others PR)
Looks good! However, should the multiplicity for the association between OptionList and Displayable be 4 instead of *?
41 (commented on others PR)
This is a great idea! Thanks! Now our code looks way cleaner
42 (commented on others PR)
Great use of constants to avoid magic literals!
43 (commented on others PR)
Looks like you have tried to cover as many possible scenarios as you can in these tests! Nice!
44 (commented on others PR)
This is much clearer now! Great!
45 (commented on others PR)
Great use of System.lineSeparator() !
46 (commented on others PR)
Great change! We should have just use the method to print out messages as it already exists.
47 (commented on own PR)
Hey! Thanks for the quick response! Able to make timely adjustments because of that. Have made a new commit with the necessary changes! Do check it out if you are free!
48 (commented on own PR)
Sure! Working on it!
49 (commented on own PR)
Alright noted, happen to have it here because it is linked to the QuizQuestion class.
50 (commented on own PR)
Alright I think a better fitting name would be QuizQuestionsManager as it manages the quiz questions instead of simply being a list.
51 (commented on own PR)
Initially I wanted the getDescription method to only be getting the description of the question, but it is also indeed true that once getDescription method is called it is clear that the question is shown too. Will be changing this! Thanks!
52 (commented on own PR)
Working on it!
53 (commented on own PR)
Oh! Sorry! This comment is supposed to be deleted from the commit as it was from a previous version! I will change it now.
54 (commented on own PR)
@kstonekuan has pointed out the mistakes with these lines of code. Thanks!
55 (commented on own PR)
Alright! Thanks! I will change accordingly!
56 (commented on own PR)
Yep, thanks! It is now updated as such in the new pull request.
57 (other comment)
LGTM! Good job overall!
58 (other comment)
Working on it!
59 (other comment)
Yup! @anqi20 I think you will have to take a look at how hint is implemented and related to the storage class and copy that logic into the explanations class.
@thatseant (43 comments)1 (commented on others PR)
Not necessary as it's not used.
2 (commented on others PR)
Good idea to save all white-spaced separated characters into inputs array.
3 (commented on others PR)
Should throw an error.
4 (commented on others PR)
Should throw an error.
5 (commented on others PR)
@samuelchristopher consider what happens to projectIndex pointer if project gets deleted.
6 (commented on others PR)
Not sure whether should throw an error for this.
7 (commented on others PR)
Should be printing error messages.
8 (commented on others PR)
Do we need getter when we can access class property directly?
9 (commented on others PR)
Will this error ever be triggered?
10 (commented on others PR)
Can add some further testing to check task list after adding and deleting of tasks. Also check that switching to another project changes the list of tasks.
11 (commented on others PR)
Should use the inputs array that Riaz implemented where he split the inputCommand into multiple words already.
12 (commented on others PR)
Should use the inputs array that Riaz implemented where he split the inputCommand into multiple words already.
13 (commented on others PR)
How do we handle deletion of members with duplicate names? One way could be not to allow duplicate members with same name to be created.
14 (commented on others PR)
Consider making message type more descriptive perhaps by naming the error(See below). Error messages are clear.
15 (commented on others PR)
It is hard to tell from the messageType the error. Example Naming: AddTaskWrongView
16 (commented on others PR)
I feel like we shouldn't use variable "description" for both project name and description as it will be confusing to use one variable for two different purposes.
17 (commented on others PR)
Same here. I feel like we shouldn't use variable "description" for both name and description as it will be confusing to use one variable for two different purposes.
18 (commented on others PR)
Should not be "Task View"?
19 (commented on others PR)
I feel to make it more convenient you can return name, description and deadline here.
20 (commented on others PR)
Then, here just call toString to return name, description and deadline here.
21 (commented on others PR)
Ya Ive left similar comments in your previous pull request, do check it out.
22 (commented on others PR)
Same point as Shreyas mentioned...members should not be access directly.
23 (commented on others PR)
isNamePresent should be renamed. It's to serve as an output.
24 (commented on others PR)
Project.members
25 (commented on others PR)
Project.members
26 (commented on others PR)
Good renaming of variable
27 (commented on others PR)
I don't think this should be private too
28 (commented on others PR)
Can be simplified to project.getTask(taskIndex)
29 (commented on others PR)
No need for this function after above comment.
30 (commented on others PR)
I feel that selectTask is just retrieving task using project.getTask() followed by an output message. There's no need for this function as output is handled in Command class
31 (commented on others PR)
But parse() only throws DukeExceptions and not NumberFormatException?
32 (commented on others PR)
How does it catch Integer.parseInt?
33 (commented on others PR)
iirc prof mentioned we are not supposed to catch NullPointerException. Checked online and seem to be the case as well.
34 (commented on others PR)
Not urgent but for consistency are we supposed to use the Ui class you implemented?
35 (commented on others PR)
Hmm what is switchViewModes for? There's already home command to switch to home.
36 (commented on others PR)
Consider assigning tasks to TeamMember here
37 (commented on others PR)
It becomes important for members to keep track of tasks so deleted members will no longer be attached to tasks.
38 (commented on others PR)
Are we printing lists here or in Ui? I actually don't mind either but should be standardised. Not a high priority as of now though.
39 (commented on others PR)
Just to clarify, this command activates the Project View both Samuels are doing right?
40 (commented on others PR)
Why is the try catch shifted from parse to executeCommand?
41 (commented on others PR)
Shreyas says in another pull req "as riaz mentioned I think we don't need to put a try-catch block over here since we catching it in the main class, we just throw the exception in that method"
But parse() only throws DukeExceptions and not NumberFormatException?
42 (commented on others PR)
Agree with this
43 (commented on others PR)
I feel this is confusing. What is the difference between isDone and getStatus?
44 (commented on own PR)
Agree
45 (commented on own PR)
Yup thanks Sam
46 (commented on own PR)
The user guide has no deadline for projects. But if simple, can just do
47 (commented on own PR)
Yup done!
48 (commented on own PR)
My thinking is it would be clear where this method is called ie. project.getTask().
What do the rest think?
49 (commented on own PR)
No it can accept more than one parameter. The split here is to separate commandType from the parameters. Inputs[1] contains the whole string beside the first word.
50 (commented on own PR)
As of now, the function already loops through and extracts all params.
51 (other comment)
Hi Sean @thatseant , let me answer the points:
- There's no way to display project view other than selecting project.
Is there a need to display project view other than selecting the project?
- Multiple members are not shown.
Currently, each task can be assigned on member.
- Tasks are not numbered so it is hard for user to see index of tasks.
Oh okay! I have built this from the mock-up that we approved and I did not include the index at that point. Maybe for the next iteration we can add an index column? For now, users can use the list command?
Hmm Sam regarding point 1 and 3 yes effectively the project view replaces the list command which doesn't show anything useful.
If not lets say in my program i made a few changes such as adding deadlines to my tasks. In order to view the updated changes:
I have to return to home via home command
then select the project again via select just to view the changes
I propose just showing the project view when user types list command
@dojh111 (40 comments)1 (commented on others PR)
Maybe in the while loop you can switch it to a variable called: isEmpty or something instead, then you update that variable through a method which returns true when noteTitle.trim().length() == 0
2 (commented on others PR)
These 2 lines can be abstracted out into a single method for better SLAP
3 (commented on others PR)
Can extract into a method named "isValidTitle" or something
4 (commented on others PR)
This can be extracted into a method as well, the contents in the brackets of the "if condition"
5 (commented on others PR)
Can be extracted into a single method to improve SLAP
6 (commented on others PR)
Same thing, can be extracted into a single method
7 (commented on others PR)
Extract into single method called "checkForOutOfBounds" or something
8 (commented on others PR)
Your test names I think you can look at the naming scheme on the module website - SUT name_Inputs_Expected outcome - style
9 (commented on others PR)
Maybe you can try breaking this part up so that its abit easier to read
10 (commented on others PR)
Maybe each if statement can be put into its own method
11 (commented on others PR)
The contents in the if statement can be simplified into a nicer name I think, like "isEqualToDate"
12 (commented on others PR)
This command can be put into a separate class for reuse by the delete class
13 (commented on others PR)
Same as above, can be put into another class to be shared
14 (commented on others PR)
This as well
15 (commented on others PR)
Can split into a few smaller methods
16 (commented on others PR)
Repeated in 2 classes, can be shared also
17 (commented on others PR)
I think you missing a word here
18 (commented on others PR)
Maybe can simplify the condition into another method that returns true false to make it a bit more readable.
19 (commented on others PR)
Same here for the JavaDoc comment
20 (commented on others PR)
Should the logic for like determining which messages to print be done not in the Ui class? I'm not very sure also, want to know your opinion
21 (commented on others PR)
This line can be sent to Ui class - Pass in the "i" and the "note title" into a Ui method to print for you
22 (commented on others PR)
Same as above
23 (commented on others PR)
Can simplify the while loop conditionals
while (!isEqualY && !isEqualN)
24 (commented on others PR)
Same as the above
25 (commented on others PR)
Simplify this also
26 (commented on others PR)
Simplify this conditional
27 (commented on others PR)
Check for the extra white space
28 (commented on others PR)
Maybe can just add some white spaces to separate the different logic to improve the code readability/aesthetics abit! Same for the other edit commands below.
29 (commented on others PR)
Contents of if conditional may be extracted into another method to return true or false
30 (commented on others PR)
Same for this if conditional statement. Can be extracted into a method if you can find a name for it
31 (commented on others PR)
Same here, for the if conditional
32 (commented on others PR)
Maybe this method can go into Ui, will need to check with the rest
33 (commented on others PR)
Actually, maybe we could have a class accessible variable for NoteHistory so that any method can access it at any point. When the execute is run, we set the class variable as the passed in noteHistory, this way we do not need to pass the noteHistory object down through multiple methods.
34 (commented on others PR)
Help move the storage.saveTasks() from after all the catch blocks to after when the taskHistory.pushOldCopy() method is called - (Line 74 in this case) for the event and lesson edit classes also.
35 (commented on others PR)
Move the storage.saveTask() method to the line below this.
36 (commented on others PR)
Move the storage.saveTask() method to the line below this.
37 (commented on others PR)
Can we make this a Ui method
38 (commented on others PR)
Maybe instead of setting the editNumber through the constructor, set a method called setEditNumber() in the Task class itself instead.
39 (commented on others PR)
Hmm yea good point. But I think what Johannine is trying to get here is separation of concerns, where we have a class that just deals with the tracking and updating of the history of tasks. I guess this is up is really up to choice, which way do we want to push towards more.
40 (commented on others PR)
Actually is there any case where we will not decrement the recurrence by 1
41 (commented on own PR)
Thanks for the catch, I am going to change this issue.
42 (commented on own PR)
Possible, I realised the name for this method may not have been the best, the idea was that I have a method that checks if both files exist - If they do, we will skip straight to file reading. If any of the files do not exist, we will proceed with save creation.
I have updated the method name to "checkIfBothFilesExists" to better reflect this.
43 (commented on own PR)
Alright, I have refactored the entire method into individual methods to improve the SLAP
44 (commented on own PR)
Alright, ive tried my best to refactor the function into a single method
45 (commented on own PR)
Alright, I've changed this, thanks for the suggestion
46 (commented on own PR)
Yep, definitely, but idk where to put it for now, so I wont move it yet
47 (commented on own PR)
Alright, changed it, thanks
48 (commented on own PR)
Alright, updated the code accordingly
49 (other comment)
Closed by #75
50 (other comment)
Point 5.0 Product Scope in Developer Guide missing preface
Add new Undo function into Guidelines for Manual Testing
Fix typos in section 3.2.2 UI Component
@f0fz (36 comments)1 (commented on others PR)
Is this supposed to be inputChecker(userInput) and not !inputChecker(userInput)? If the user command is valid then it will continue asking for user input?
2 (commented on others PR)
Is HelpCommand supposed to be the only one in Pascal case?
3 (commented on others PR)
If removing getter function, then the feedbackToUser attribute should not be private.
4 (commented on others PR)
Should be output == null because TaskManager/ModuleManager returns null if the respective lists are empty.
5 (commented on others PR)
TaskManager's edit function takes a new Task object to get around needing an edit function for each property of task, especially when we will be adding new task properties in the future. Is it possible to reverse this change here?
6 (commented on others PR)
What are these edits for?
7 (commented on others PR)
Command classes should only call methods or store and pass information, and should not have standalone methods. Ideally, your timetable command would call 'TimeTable.generateWeekTable()' (and others) and not have its own method for doing so.
8 (commented on others PR)
Will roll these methods into the new Lesson class
9 (commented on others PR)
The logic in this method (and the next method below) will be moved to the new TimeTable class
10 (commented on others PR)
Do we actually need quotes around the old and new module codes?
11 (commented on others PR)
Can we actually use this format for date?
12 (commented on others PR)
Missing a space between opt and args
13 (commented on others PR)
Download instead of down?
14 (commented on others PR)
Space after colon. Also, the command is bye instead of exit no?
15 (commented on others PR)
Should add an explanation here that the task_index can be found from list -t
16 (commented on others PR)
Should be bye?
17 (commented on others PR)
The "Add a module to the timetable" line should be removed since this command is continued on the next line.
18 (commented on others PR)
Just checking - I thought we implemented timetable commands already?
19 (commented on others PR)
An example like 30-12-2020 will probably be better since 2-2 is a bit ambiguous about month and day.
20 (commented on others PR)
Inaccurate deadline format here
21 (commented on others PR)
Should give a short explanation of task_index and how to find it
22 (commented on others PR)
Space between >opt> and >args>
23 (commented on others PR)
Should be delete -t 1
24 (commented on others PR)
Should be delete -m CS2113T
25 (commented on others PR)
edit -m CS2113 CS2113T
26 (commented on others PR)
Should also add context that only mods that can be found on NUSMods can be added here
27 (commented on others PR)
Should be >task_index>
28 (commented on others PR)
Should be >task_index>
29 (commented on others PR)
Should be edit -m >module_code> >new_module_code> to stay consistent with UG
30 (commented on others PR)
Space between >opt> and >args>
31 (commented on others PR)
>task_name> instead of >args>?
32 (commented on others PR)
>module_code>?
33 (commented on others PR)
Space between >opt> and >args>
34 (commented on others PR)
>task_index> >task_name>
35 (commented on others PR)
Why is "Undo" help inside TimeTableCommand?
36 (commented on others PR)
All the >...> fields should be named the same way as in the UG. Refer to the above comments to see examples.
37 (commented on own PR)
Okay, I will add that in a later PR
38 (commented on own PR)
There will be a total of 27 enums which will have names like MOD_SUCCESS_TASK_FAILURE_TIMETABLE_SKIP which I think is less readable than this. I think this is an acceptable loss in readability since it's only being passed between 2 functions.
39 (commented on own PR)
Also I'll need 27 conditional branches in order to return the right enum 😨
40 (other comment)
Seems like there's a lot of changes made... Can we get a more detailed description?
41 (other comment)
Checks seem to be failing due to missing portions from other parts of the code base. Parser code seems good to me.
42 (other comment)
Please update branch
43 (other comment)
Update branch please
44 (other comment)
Please update branch
45 (other comment)
#70 WIP
46 (other comment)
Seems like UG updates are included in the other PR? Closing this one.
47 (other comment)
What's the bug?
48 (other comment)
Try using this in Message.java instead
public static final String ICON_DONE = "\u221A";
public static final String ICON_NOT_DONE = "\u0078";
49 (other comment)
What's with the build.gradle update?
50 (other comment)
Fixed by #150
51 (other comment)
Nice catch, fixed by #152
52 (other comment)
Can't seem to replicate this one. How about you guys? @Aseanseen @amalinasani @tobiasceg @wangqinNick
53 (other comment)
Fixed by #153, thank you
54 (other comment)
Fixed by #153
@tienkhoa16 (35 comments)1 (commented on others PR)
Perhaps you can explicitly list out all the imports instead of using * to pass checkstyle
2 (commented on others PR)
maybe remove unused code?
3 (commented on others PR)
whitespace after while
4 (commented on others PR)
whitespace before { ?
5 (commented on others PR)
Maybe this method should be Storage class since the Create Command should be focusing on dealing with the creation diet session
6 (commented on others PR)
perhaps this can be extracted out to the printResponse() method
7 (commented on others PR)
Printing help in workout session search does not seem so right 😅
8 (commented on others PR)
Perhaps can implement the UI printing here also
9 (commented on others PR)
Should the name of array type variable in plural form (i.e. inputs, exercises)?
10 (commented on others PR)
Should the boolean array name sounds more boolean (i.e. hasEndedWorkoutSessions)?
11 (commented on others PR)
Workout Session is under Workout Menu, so is it clearer if we show "Workout Menu > Workout Session >>>>>" ?
12 (commented on others PR)
This Confirmation method is duplicated in multiple places, so maybe we can extract them out into utils?
13 (commented on others PR)
Should we delete those commented out lines?
14 (commented on others PR)
For consistency in printing, can change here to "delete [MOVE_ID]"
15 (commented on others PR)
And also here to "search [NAME_OF_MOVE]"
16 (commented on others PR)
Actually, it's used in workout manager and workout session as well. So can merge this PR first then I'll create a util method for that and you guys refactor your code accordingly
17 (commented on others PR)
Since they are final variable, should they be in all uppercase form? Or just remove the word "final"?
18 (commented on others PR)
The command words can change to the constants created
19 (commented on others PR)
For consistency, should it be "Workout Menu"?
20 (commented on others PR)
And "Main Menu" here?
21 (commented on others PR)
Parses?
22 (commented on others PR)
an integer index?
23 (commented on others PR)
can consider adding a blank line between description and @param to follow coding standards? And add punctuation behind each parameter description also. It's in the "note in particular" session.
24 (commented on others PR)
This format is also repeated in WorkoutSessionList, so you can consider refactoring it to a constant.
25 (commented on others PR)
Should this be "Please make sure ... are non-negative numbers" since move like push-up can have weight of 0?
26 (commented on others PR)
The FILEPATH can consider using the path constants created in seedu.duke.Constant
27 (commented on others PR)
Should this comment be updated also?
28 (commented on others PR)
And also is the "wrong format, please enter ... [command format]" part a bit redundant in the message?
29 (commented on others PR)
Since WorkoutSessionUi extends CommonUi already, should the line "private static CommonUi printer = new CommonUi();" be removed and use the "showToUser" method of CommonUi?
30 (commented on others PR)
You can make use of "showUser" method in CommonUi. It's also static.
31 (commented on others PR)
Can consider shortening this part to this.calories = Math.min(calories, 200000);
32 (commented on others PR)
Should the title be "Searching for a Move from the Current Workout Session"?
33 (commented on others PR)
Change this title to sync with the title in table of contents
34 (commented on others PR)
and change the anchor to >a id="ws-search">
35 (commented on others PR)
The feature description does not match
36 (other comment)
Fixes #62
37 (other comment)
Great work in refactoring! 👍
38 (other comment)
Great enhancement!
@Jane-Ng (33 comments)1 (commented on others PR)
It would be better if "commandArgs" is used instead of "arg" to standardize with the rest
2 (commented on others PR)
It would be better if you initialise the Chapter object in the ReviseCommand
3 (commented on others PR)
follow the format of methodUnderTest_inputGiven_expectedOutput for test methods
4 (commented on others PR)
out.println will do for this line
5 (commented on others PR)
It would be better to use .equals instead of == and != for comparing the string
6 (commented on others PR)
instead of checking if (access.getModuleLevel() != "") first, you can do something like this:
if (access.getModuleLevel().equals("")) {
// print error message
return;
}
// rest of the code that should be executed
7 (commented on others PR)
instead of checking if (access.getChapterLevel() != "") first, you can do something like this:
if (access.getChapterLevel().equals("")) {
// print error message
return;
}
// rest of the code that should be executed
8 (commented on others PR)
instead of checking if (access.getModuleLevel() == "") first, you can do something like this:
if (!(access.getModuleLevel().equals(""))) {
// print error message
return;
}
// rest of the code that should be executed
9 (commented on others PR)
will getting the chapter in ReviseCommand be better? means you pass the chapterIndex in the ReviseCommand()
10 (commented on others PR)
This method is not needed, it has been changed to loadCard
11 (commented on others PR)
Would the original way be better?
Admin admin = new Admin(storage.loadModule());
Then don't need to import the ModuleList class
12 (commented on others PR)
Should all these be under Ui class instead?
13 (commented on others PR)
Should return ListDueCommand()?
14 (commented on others PR)
This method not needed as well
15 (commented on others PR)
Do not need to pass in Storage object
16 (commented on others PR)
Do not need to pass in Storage object
17 (commented on others PR)
Yes
18 (commented on others PR)
I think for this, you can have a return after line 41 so that you would not need the else part. Then the rest of the code will follow. Something like this:
if (dueChapters.size() == 0) {
ui.showToUser("You have no tasks due today! Please check back again tomorrow!");
return;
}
// rest of the code
19 (commented on others PR)
you can use ui.showToUser
20 (commented on others PR)
you can use ui.showToUser
21 (commented on others PR)
you can use ui.showToUser
22 (commented on others PR)
maybe you should check if the user entered a valid argument? for example you can check if the user entered a valid date, and if the user user entered 'history', you can pass today's date as the argument
23 (commented on others PR)
Maybe you call createHistoryDir in the method createAdmin in storage.
And for createHistory, you can call it in the method saveHistory
24 (commented on others PR)
instead of checking for history here, you can check in loadModule in storage instead. so that it wont add the history folder as a module object
25 (commented on others PR)
instead of checking for dues here, you can check in loadChapter in storage instead. so that it wont add the due folder as a chapter object
26 (commented on others PR)
if the due date is null, you can show something like "No due date" instead of "due by null"
27 (commented on others PR)
if the due date is null, you can show something like "No due date" instead of "due by null"
28 (commented on others PR)
you can use setIsModuleLevel() to do this
29 (commented on others PR)
you can use setIsAdminLevel() to do this
30 (commented on others PR)
you can use setIsModuleLevel() to do this
31 (commented on others PR)
you can use setIsChaptereLevel() to do this
32 (commented on others PR)
these 2 methods not needed anymore
33 (commented on others PR)
maybe you can do throw new FileNotFoundException(message) then it will show the error at Kaji.java
@HengFuYuen (32 comments)1 (commented on others PR)
Perhaps you can consider changing the method name to getPortionSize.
2 (commented on others PR)
Perhaps you might want to leave a blank line at the end of the file.
3 (commented on others PR)
Maybe you can consider adding JavaDoc comments to some of the methods in this class.
4 (commented on others PR)
Perhaps you would like to split them into different tests using assertEquals, assertTrue, etc for testing and using a three-part naming style for each method e.g. methodUnderTest_inputGiven_expectedOutput
5 (commented on others PR)
Perhaps you would like to leave a blank line at the end.
6 (commented on others PR)
Maybe you can consider using a specific import rather than a wildcard import.
Also perhaps you can consider using the three-part name format for the naming the testing methods: methodUnderTest_inputGiven_expectedOutput
7 (commented on others PR)
Perhaps you would like to consider this for the other files as well.
8 (commented on others PR)
Perhaps you can consider splitting them into individual tests and the consider naming each test in the following three-part format: methodUnderTest_inputGiven_expectedOutput
E.g.
@Test
public void getCalorie_food_returnsCalorie() {
assertEquals(480, testFood.getCalorie);
}
Also, for the assertEquals method, I think the parameters are (expected, actual) so you might also want to consider switching the variables around.
9 (commented on others PR)
Perhaps you would like to import specific methods rather than using wildcard import.
10 (commented on others PR)
Perhaps you can consider splitting them up into different tests using assertEquals and assertThrows for tests that throw exceptions.
11 (commented on others PR)
Perhaps you can consider leaving a new line at the end.
12 (commented on others PR)
Consider breaking this up into different methods.
13 (commented on others PR)
Maybe consider adding a semicolon at the end of this line.
14 (commented on others PR)
Perhaps consider adding () after clear so .clear()
15 (commented on others PR)
Maybe you can consider using ui.printDatabase(manager.getDatabase.getFoodList) because I think printAllData method is used mainly for debugging purposes.
16 (commented on others PR)
Hi! Perhaps you would like to add in the name parameter when constructing the person class as well as currently the first input parameter of a person is actually their name.
17 (commented on others PR)
Perhaps consider using break instead of return after each case switch.
18 (commented on others PR)
I am not sure if this will be an error, however, I have changed my printFoodList input parameter to a String instead of a FoodList, maybe you would like to add in .toString() behind the getFoodLis()
19 (commented on others PR)
Sorry for informing you late, last night I decided to change the method name to ui.printPersonInfo(String personInformation) to keep things consistent and shorten the method name, so perhaps you would like to make an edit as well. Also, I can't seem to find the variable personInformation that you passed in as a parameter maybe you would like to input getPerson.toString() instead as the method takes in a String.
20 (commented on others PR)
I think foodList might not have a get method so maybe you can consider shifting line 114 up as line 114 returns a String representation of the deleted item and you can just pass this String into the ui's printDeletedFood method.
21 (commented on others PR)
Perhaps you may want to change this as Ui does not have a divider method.
22 (commented on others PR)
Perhaps consider changing female to an if-else case and the else case can throw an exception. Maybe you would like to consider this for activity level as well.
23 (commented on others PR)
I am not very sure if an update would be good/necessary for this file but perhaps you can consider.
24 (commented on others PR)
Perhaps you might want to make a specific imports rather than wildcard imports.
25 (commented on others PR)
Perhaps you would like to consider using the three part naming style.
26 (commented on others PR)
Perhaps you would like to handle cases where the activity level is high or extreme and code an assertion for the default case.
27 (commented on others PR)
Perhaps you would like to use an assertion for the default case.
28 (commented on others PR)
Maybe you can consider using current weight instead of original weight for the calculations.
29 (commented on others PR)
Perhaps you can consider adding a blank line at the end. Same for the other files.
30 (commented on others PR)
Perhaps consider leaving a blank line between headers and content.
31 (commented on others PR)
Perhaps consider using the three-part naming style for the tests.
32 (commented on others PR)
Perhaps consider adding a case for male gender.
33 (other comment)
Thank you for reviewing!
Reasons behind the implementation of setter methods: Possible future extensions that enable users to make edits to their information in case they have inputted it wrongly or if the information has changed over time. (Editing function is not currently available in this iteration as the user can restart the program to reinput the information but this function could be considered in the next when user data is saved and cannot be edited otherwise). However, if this is not implemented in the next iteration and is unnecessary, it will be removed.
Will add current weight field next iteration
34 (other comment)
As the Food class (functional but without JavaDoc comments) are already merged into the master branch of the team repo, maybe you can consider pulling the team repo into you local repo and merging the master branch to your branch (take note not to do it the other way around) so that your branch is up to date with the team repo and this would also likely minimise any possible merge conflicts.
35 (other comment)
Merging of Calculator was done in another PR #19.
36 (other comment)
Satisfied by #42
37 (other comment)
Satisfied by #42
38 (other comment)
Satisfied by #42
39 (other comment)
Merging of Main. Parser and Manager done in #44
40 (other comment)
Satisfied by #104
41 (other comment)
I/O testing will not be used.
@jerichochua (32 comments)1 (commented on others PR)
Once we have Ui class we can consider moving these lines of code there instead, and call the required methods. Same for viewProfile().
2 (commented on others PR)
Try to be consistent with the spacing between methods? And add the whitespaces in the method names, eg
public Exercise(String name, Calorie caloriesBurnt) {
For this class and the other classes as well.
3 (commented on others PR)
I think you haven't deal with the case when the user enters bye. Maybe use a boolean isExit, equal to c.isExit() and use that as the condition for the while loop so that the loop can be terminated?
4 (commented on others PR)
Remove the whitespace between Fitr and the open bracket, i.e. public Fitr(...) {
5 (commented on others PR)
I believe the exception class is not yet created, when it's created it should be FitrException (follow camelcase)
6 (commented on others PR)
Need to override isExit() method
7 (commented on others PR)
Run the checkstyleMain and fix the coding standard violations
8 (commented on others PR)
Use getBmi instead of getBMI
9 (commented on others PR)
Maybe consider using primitive types instead.
10 (commented on others PR)
Would it be possible to put this in a new class? Something like a DateTimeManager class?
11 (commented on others PR)
Need a fullstop at the end of the sentence, otherwise the checkstyle will complain.
12 (commented on others PR)
Need to change the text - you're reading the tips file.
13 (commented on others PR)
If we move the tips.txt file into a resources folder, then I think there isn't a need to pass the path of the file to the constructor since the location of the text file would be fixed. Can consider removing it from constructor and just define src/main/resources/tips.txt above.
14 (commented on others PR)
Wouldn't be necessary - the file is not user generated, and it would have been packaged with the JAR file already.
15 (commented on others PR)
Check indentation
16 (commented on others PR)
Will the user be entering a command to get tips? If not I don't think it should be a Command class... looking at the main class it seems like it's not, it shows up whenever the program first runs. I think can consider not extending Command and just use a standalone class, maybe something like TipManager?
17 (commented on others PR)
Feels like this can be simplified, since the tips will be shown when the program first runs, and the user isn't going to be typing a command for tips. See the comment in the TipCommand class..
18 (commented on others PR)
See the comments in the Storage class - I don't think its necessary to include a file path of the tips file since it's going to be included inside the JAR file, so can consider removing it from the constructor here..
19 (commented on others PR)
I think should put in a single line, not separate
20 (commented on others PR)
Since the class is not a command anymore, maybe can consider putting it in another package? Maybe a tip package?
21 (commented on others PR)
Got two different caloriesInFood here...
22 (commented on others PR)
Isn't the return type of calories an int?
23 (commented on others PR)
Are these commented lines still needed? If not needed then maybe can consider removing them?
24 (commented on others PR)
Same here - maybe consider removing them if not needed?
25 (commented on others PR)
Need to add public in front
26 (commented on others PR)
Need add public in front also
27 (commented on others PR)
I think using assert like this is abit dangerous?
28 (commented on others PR)
I think its printCustomMessage right? Not error
29 (commented on others PR)
Can consider extracting this out as a method?
30 (commented on others PR)
Can consider extracting this out as a method?
31 (commented on others PR)
Can consider extracting this out as a method?
32 (commented on others PR)
Can consider extracting this out as a method?
33 (other comment)
Fixed in #24
34 (other comment)
Finished implementing the loading and saving of files for user's profile, food and exercise lists.
Checks failing because of the AddCommand class.
35 (other comment)
Already implemented, thanks
36 (other comment)
See #167
37 (other comment)
@gohsonghan98 can consider one-shot commands, eg edit name >name>
@ChanJianHao (30 comments)1 (commented on others PR)
Would be good if an extra line is added after EOF.
2 (commented on others PR)
All good now!
3 (commented on others PR)
Perhaps we could standardize our logger to be something along the lines of private static Logger LOGGER = Logger.getLogger(">CLASS>.class.getName()");
4 (commented on others PR)
Remember to add a new line for EOF, otherwise, LGTM!
5 (commented on others PR)
Perhaps use of a constant would provide more clarity.
6 (commented on others PR)
Good use of logger!
7 (commented on others PR)
Perhaps a constant would provide better clarity?
8 (commented on others PR)
Introducing a constant here would be good?
9 (commented on others PR)
Might want to add a new line to EOF here.
10 (commented on others PR)
How about a new line here?
11 (commented on others PR)
Would it be better to just gitignore the entire folder rather than individual sub-folders?
12 (commented on others PR)
Perhaps some meaning could be added to those numbers.
13 (commented on others PR)
Perhaps the phrasing for this message could be simpler
14 (commented on others PR)
Perhaps add a new line before EOF.
15 (commented on others PR)
Great work extracting datetime class!
16 (commented on others PR)
Perhaps we could standardize the amount of periods we use for logs, and when to use them?
17 (commented on others PR)
Great work on updating the runtest file!
18 (commented on others PR)
Alright sounds good!
19 (commented on others PR)
Perhaps you could standardize params naming to be PARAMETER_NAME?
20 (commented on others PR)
Great work in writing tests!
21 (commented on others PR)
Great work separating long strings into multi lines.
22 (commented on others PR)
Is it good practice to print test results?
23 (commented on others PR)
Great work refactoring them1
24 (commented on others PR)
Good tests!
25 (commented on others PR)
Great addition!
26 (commented on others PR)
Perhaps add a new line here
27 (commented on others PR)
Would a new line here be good?
28 (commented on others PR)
Good work with refactoring!
29 (commented on others PR)
Great work explaining!
30 (commented on others PR)
I like your example
31 (commented on own PR)
Updated, thanks!
32 (commented on own PR)
Fixed that, good catch.
33 (commented on own PR)
Thanks for the reminder!
34 (commented on own PR)
You're right, shall leave the fix for the next update!
35 (commented on own PR)
Good catch, removed them!
36 (other comment)
``
37 (other comment)
I apologise for the delay in the review. Thanks for working on the UG!
No worries, have a good weekend!
38 (other comment)
Hello,
This was actually intended as workspace is meant to only include alphanumeric characters and or spaces.
I will take note to update the guide instead.
Thank you.
39 (other comment)
Indeed, this might be something we can consider adding in future versions.
@OngDeZhi what do you think?
40 (other comment)
How should we fix this, team? In my opinion this is a font issue but perhaps we could provide more clarity on our end.
@AY2021S1-CS2113T-F12-2/developers
@chuckiex3 (29 comments)1 (commented on others PR)
I think this can be removed?
2 (commented on others PR)
InvalidInputException?
3 (commented on others PR)
I could do that next time if you want? xD
4 (commented on others PR)
Okay, sure!
5 (commented on others PR)
I think imports should be listed explicitly, as stated in https://se-education.org/guides/conventions/java/basic.html
6 (commented on others PR)
Sooooooo much neater omg, thank you.
7 (commented on others PR)
Good effort in making this section neater xD
8 (commented on others PR)
Probably should not have wildcard imports...
9 (commented on others PR)
argument* , same for the others
10 (commented on others PR)
Trivial, but you may want to use NOTEBOOK_DELIMITER, SECTION_DELIMITER and PAGE_DELIMITER respectively for this.
11 (commented on others PR)
oh yes hehehe that's a better description than mine xD
12 (commented on others PR)
missing the link to the delete function!
13 (commented on others PR)
oh yes separating the commands for the different modes seems like a good idea! 😀
14 (commented on others PR)
I'm not sure if we should leave this as planner mode.. I think we should standardise what we call it since it's called timetable mode in our code.
15 (commented on others PR)
hehehe thank you for helping me fix this
16 (commented on others PR)
btw, I think you need a gap between the # and the words, i.e. "### Listing tasks: list" instead of "###Listing tasks: list", in order to make that a header.
17 (commented on others PR)
oh yay
18 (commented on others PR)
I think you should remove this line...
19 (commented on others PR)
I think this should be removed ?
20 (commented on others PR)
Good job!
21 (commented on others PR)
it's intended. xD
22 (commented on others PR)
nope, you can select a notebook anywhere.
23 (commented on others PR)
not sure if you wanna add select /nCS2113T /sChapter1 /p1 into this section because you can actually do that in our app...
24 (commented on others PR)
also not sure if you noticed but it's prerequisites... HAHAHAH I think you just copied and pasted for all the prerequisites part so it's just prerequistes..hehe
25 (commented on others PR)
oh wait as in the date format must be dd-MM-yyyy. It's just that both 1) add /t test task /by 2020-10-10 2000 and 2) add /ttest task /by2020-10-10 2000 will work! notice how there's a space between the delimiter and user input in 1).
26 (commented on others PR)
OHOH I SEE WHAT YOU MEAN NOW YOU'RE CORRECT. sorry for the confusion xD
27 (commented on others PR)
HAHAHA NICE.
28 (commented on others PR)
It still works actually xD
29 (commented on others PR)
some are non-academic related * ?
30 (commented on own PR)
Hmm, I initially didn't have that there but IntelliJ threw me an error. xD I clicked on whatever they suggested (which is return null;). No worries, I'll go have a look at it again 😄
31 (commented on own PR)
Yea, sure. That can be done. 👍🏼
32 (commented on own PR)
... Omg that is true HAHAHA okay, I'll change that.
33 (commented on own PR)
Yea sure, that would be nice.
34 (commented on own PR)
...Right. I'll delete that line.
35 (commented on own PR)
ah, definitely not. I'll go change that.
36 (commented on own PR)
I did something similar in my own ip as well. xD See if the others have anything to say about it then?
37 (commented on own PR)
I'll add this as a //TODO for now
38 (commented on own PR)
I'll just add this as a //TODO for now
39 (commented on own PR)
added as a //TODO
40 (commented on own PR)
What do you suggest changing it to? xD Or you mean I should just replace that line with sth like if (notebookIndex > 0) ?
41 (commented on own PR)
ooooooh the -1 is thrown when the notebook/section/page cannot be found (when the user selects a notebook/section/page that doesn't exist)... so you don't like that the -1 is being thrown is it ?
42 (commented on own PR)
Sure, I'll edit that before merging.
43 (commented on own PR)
Do you think it sounds better if i add "Having all your notebooks in one place can help organise your notes and thoughts better! " right after that?
44 (commented on own PR)
honestly, not sure if i should put it there when we haven't used the mascot anywhere else... and it's not like the mascot is even necessary
45 (commented on own PR)
honestly yea, the >br> is doing the magic xD
46 (other comment)
Yayyyyyy thank you.
47 (other comment)
should fix #62
48 (other comment)
Fixed by #91
49 (other comment)
if you think it's good enough then merge it please 😛
50 (other comment)
Should fix #119, #120, #121.
51 (other comment)
The IO test will fail now since there's a welcome message right? Or is there something wrong with my code HMM
I don't think it has anything to do with the IO part?
I updated the IO part after adding the welcome bit... haha maybe you're missing an import statement somewhere?
52 (other comment)
Ready for review pt2 xD
53 (other comment)
Fixes #112, #116
54 (other comment)
newer functions not in CliCommands diagram
55 (other comment)
56 (other comment)
utterly confused and unable to reproduce the same error.. o.o
57 (other comment)
The expected format is actually delete /nCS2113T /sTesting /p3 . . . I guess we can change the format then. xD
58 (other comment)
The expected format is select /pnumber e.g. select /p2. It is also stated in the error message. but it's okay xD
59 (other comment)
@yAOwzers in the group, they mentioned that maybe we should just change the whole format for calling the command.. like just type in the page title instead of the page number ...
60 (other comment)
should close #153 , #155 , #158 , #163 , #164 , #165 , #166 , #167 , #169 , #171 , #172 and #178
@Kafcis (28 comments)1 (commented on others PR)
According to the UG, the file should be data.csv. This was my mistake that I did not fix because it was temporary test code.
2 (commented on others PR)
the correct name here according to the user guide is load.csv. This was my mistake, eventually we should allow the user to change what file they are loading
3 (commented on others PR)
There is a possibility of an empty save file, should initialise maxNumber to the default of -1?
4 (commented on others PR)
Much cleaner code than the original
5 (commented on others PR)
found it a bit weird that the argument order is not the same as add task, I know that the number is a required argument so its in the front, but it might look a bit messy to others.
I would have done the same, but am also not too sure about the correctness
6 (commented on others PR)
Done
7 (commented on others PR)
Sounds good!
8 (commented on others PR)
The TaskList initialises the maxNumber as -1. We can either change it here or there as long as its standardised. I suggest changing it here because I used this in some of the test code and allows us to check fo rpotentially unused TaskLists
9 (commented on others PR)
This if else block can be replaced with a switch block to improve readability
10 (commented on others PR)
This is a good idea
11 (commented on others PR)
small nitpick, i can start from 0 then go to i>6, functionality wise is the same but might be more readable for others
12 (commented on others PR)
not sure if we should support having tasks with the same task number, as long as the cloned tasks are not saved should be ok.
13 (commented on others PR)
Nice cleanup here, eventually should be moved to Time class
14 (commented on others PR)
need more parser code to change this later
15 (commented on others PR)
maybe can use the string "+-------"?
16 (commented on others PR)
same thing as line 104, maybe can use only 1 string
17 (commented on others PR)
not sure if this is going to be flagged in the checkstyle
18 (commented on others PR)
Something similar is in 115, could consider making it an attribute or a method call from the Task/Time class
19 (commented on others PR)
I think that keeping these this here is better, it keeps calling bits and pieces all the time. If we do eventually do refactor it, the class needs to put the entire timetable in one shot
20 (commented on others PR)
we can just throw an error that says that the tasknumber is conflict with another, I'll handle this in the allocator PR
21 (commented on others PR)
awesome
22 (commented on others PR)
Add a check if the taskRecurrence is Today or a particular date, probably don't need "every today" to be printed out
23 (commented on others PR)
Basic functions are covered that's good. Cleaned up the diagram a little bit, check it out and tell me what you think
title List
actor ATHENA
ATHENA->ListCommand: execute()
activate ListCommand
ListCommand->*ImportanceFilter:
activate ImportanceFilter
ImportanceFilter-->ListCommand:
destroy ImportanceFilter
ListCommand->*ForecastFilter:
activate ForecastFilter
ForecastFilter-->ListCommand:
deactivate ForecastFilter
ListCommand->*Timetable:
activate Timetable
Timetable->+TaskList: getFilteredList()
TaskList->+TaskFilter: isTaskIncluded()
TaskFilter-->-TaskList:
TaskList->+ForecastFilter: removeExcludedDates()
ForecastFilter-->-TaskList:
destroy ForecastFilter
destroy TaskFilter
TaskList-->-Timetable:
Timetable->Timetable: populateTimetable()
activate Timetable
deactivate Timetable
Timetable-->-ListCommand:
ListCommand-->-ATHENA:
24 (commented on others PR)
Rest of this looks good, one small suggestion to change this to TaskList->*Task: , it makes the arrow point directly to the block at the top.
25 (commented on others PR)
Might want to include the actor here
26 (commented on others PR)
need an activation bar here
activate AddCommand
27 (commented on others PR)
Cleaned up the diagram a bit
title Edit
EditCommand->+TaskList: editTask()
activate EditCommand
TaskList->TaskList: getTaskFromNumber()
activate TaskList
deactivate TaskList
TaskList->-TaskList: createTask()
activate TaskList
TaskList->*Task:
activate Task
deactivate Task
TaskList->TaskList: checkClash(possibleEditedTask)
activate TaskList
deactivate TaskList
TaskList->+Task: edit()
Task-->-TaskList:
TaskList-->-EditCommand:
deactivate TaskList
28 (commented on others PR)
Nicely done. one small edit will be making the activation bar for the ListCommand
avtivate ListCommand
29 (commented on own PR)
I gladly accept this nitpick
30 (commented on own PR)
I refactored this part and deleted the overloading because it was not being used
31 (commented on own PR)
It deletes the correct thing, but I have to agree that the naming is a bit off
32 (commented on own PR)
The overloaded method is to distinguish tasks that require a new index vs a preloaded task with its own assigned index
33 (commented on own PR)
I'll just keep it in for now until Alston is done with the main Athena
34 (commented on own PR)
I'll just keep it in for now until Alston is done with the main Athena
35 (commented on own PR)
I'll change it to isFlexible
36 (commented on own PR)
I need the sorting according to time so ArrayList is actually a bit better for this scenario, I might need a bit of help with the time sorting, not very clear how to do it
37 (commented on own PR)
Ok will change soon
38 (commented on own PR)
Its the code coverage report files, they might appear again so I put it here so it won't be added accidentally
39 (commented on own PR)
That works too
40 (commented on own PR)
I changed it to DAY so we do not need to make a new Forecast value
41 (commented on own PR)
Eventually we can assign it in the settings, its a magic number for now
42 (commented on own PR)
It actually quits if it hits this part so the user would not notice
43 (other comment)
I was thinking the same thing actually, it is a bit difficult to store 2 separate sets of data in one csv
On Sun, 4 Oct 2020 at 10:05 PM, Daniel Lim Wee Soong > notifications@github.com> wrote:
@Kafcis >https://github.com/Kafcis> I think we don't need to store the timetable generated from the task list in a file, because the same timetable can always be generated from the same task list. Looking at the scale of this, there won't be much impact in performance if we generate the timetable when the program starts. But if you wanna do it, you can use getTimetable() to get the week's timetable.
@alstontham >https://github.com/alstontham> The timetable given to the Ui will be a list of TimetableDay objects, each containing a date and a list of Tasks. So you can work on printing that now.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub >https://github.com/AY2021S1-CS2113T-W12-2/tp/pull/8#issuecomment-703260677>, or unsubscribe >https://github.com/notifications/unsubscribe-auth/ALNIBIWF2UI3JON5UFBE72DSJB6J5ANCNFSM4SAG45PA> .
44 (other comment)
I wanted to avoid changing Amanda's code, but I can do it as a method
45 (other comment)
I think this is safe to merge, most of the checkstyle problems are addressed in the next PR
46 (other comment)
Duplicated
47 (other comment)
That sounds logical, I will do that as well for the subsequent PRs too
48 (other comment)
we did a quick fix before v1, I'll settle this in another PR
49 (other comment)
Yeah it's done
50 (other comment)
It actually goes to that part because I don't want to keep checking if the task exists before I delete it. I think its bad form but it prevents the code from having too many layers. At the moment it is already like 3 layers of nesting at some parts. The comment is just to make sure it doesn't trip the checkstyle
51 (other comment)
The format of the sequence diagram can be changed and I don't know which one we want to use. I can put them in quite fast
52 (other comment)
The time allocator test has to be completely redone, I'll pull from your branch and work it out
53 (other comment)
I can't replicate this either
54 (other comment)
Confirm, might need to update UG to clarify
@daniellimzj (28 comments)1 (commented on others PR)
Could this method be generalised? It doesn't necessarily have to be a command specifically used when saving and loading files.
2 (commented on others PR)
I think some quotation marks could make this clearer, and in the end of the sentence, I think you might mean all other cases.
* @return Boolean true if string is "true" (ignoring case), and false for all other cases.
3 (commented on others PR)
Should this be split into two methods, one for each save file? Might make it clearer.
4 (commented on others PR)
Same as above, this could be split further into 3 methods, if it makes it clearer.
5 (commented on others PR)
I think the JavaDoc comment for this function, and the variable's descriptive names, make this comment a bit unnecessary.
6 (commented on others PR)
Similar to a previous comment, the JavaDoc comment and good variable naming makes this comment seem unnecessary.
7 (commented on others PR)
I think these functions only differ in the parameter you are passing in. You could consider making it one function?
8 (commented on others PR)
Could the method be renamed to better reflect the variable you are creating?
String noteToSave = convertNoteToString(note);
9 (commented on others PR)
Same comment, you could consider changing the method name to better fit what it does.
dataToSave = convertDeadlineToString(task, taskType);
You could consider this for the methods below too.
10 (commented on others PR)
Consider changing these to non-static variables. Such that we would be accessing the object for the getType() method instead of accessing the class.
11 (commented on others PR)
Could consider using the DATE_TIME_FORMATTER from the FileCommand class.
There's no need for constants to be private, and if we ever decide to change the DATE_TIME_FORMATTER there would be less stuff to change.
12 (commented on others PR)
Could be renamed to make it consistent with checkForNotesSaveFile and other variables
private void checkForTasksSaveFile(File saveFileTasks) {
13 (commented on others PR)
Since the LifEasier class already instantiates a TimetableUi, could consider just passing that object into the execute command instead of instantiating a new one.
14 (commented on others PR)
Could consider putting this into the seedu.lifeasier.ui package with the rest of the ui classes.
15 (commented on others PR)
You could also consider leaving it like this, and in LifEasier creating a new DisplayScheduleCommand and calling the method from that object. I'm honestly not too sure!
16 (commented on others PR)
You could consider placing this section before the case for when there are no tasks in the day. Something to do with making the happy path prominent:
17 (commented on others PR)
Should this import be removed if we are no longer using the Ui class?
18 (commented on others PR)
Oh yes I forgot about that. My bad!
19 (commented on others PR)
You could add the "-1" logic in this line, so you don't need to keep typing it afterwards
noteNumber = Integer.parseInt(ui.readCommand()) - 1;
20 (commented on others PR)
You could consider refactoring this into the Parser class, and passing the parser object into the execute method too.
Doing this could help in ensuring SRP.
21 (commented on others PR)
Consider adding a line in between to ensure the JavaDoc standard is adhered to.
* Parses the deleteNotes command that the user inputs.
*
* @param input String containing the user's input.
22 (commented on others PR)
Same for a few of the other JavaDoc comments!
23 (commented on others PR)
Could consider using constants for these:
times[INDEX_START] = start;
times[INDEX_END] = end;
where INDEX_START = 0 and INDEX_END = 1
24 (commented on others PR)
same for getting the "by" of the deadline as well!
25 (commented on others PR)
Same comment as the earlier one!
26 (commented on others PR)
Could you consider renaming this to include "Message" for consistency?
public void showEditableParametersMessage(String type) {
27 (commented on others PR)
This might make it less object oriented though! I'm not too sure what is the best way also though.
28 (commented on others PR)
Can I suggest that maybe one way to do this would be to put the methods and variables in the NoteHistory and TaskHistory classes within the TaskList and NoteList class instead? This way we don't need to pass another class into every method, and instead everything is nicely contained within the TaskList and NoteList classes.
29 (commented on own PR)
Good point, I'll change it and see how it looks!
30 (commented on own PR)
The reason why I left it like this for now was because I found it difficult to have descriptive meaningful method names if I were to split it up.
31 (other comment)
Fixes #5
32 (other comment)
Closed by merging pull request #13
33 (other comment)
Closed in pull request #15
34 (other comment)
Closing pull request as the build tests fail.
Trying again in another branch.
35 (other comment)
Fixed in pull request #28
36 (other comment)
Fixed by pull requests #35 #36 #37 #38 #39 #40 #41
37 (other comment)
Fixed by pull requests #35 #36 #37 #38 #39 #40 #41
38 (other comment)
Closed by #74
39 (other comment)
Closed by pull requests #79 #81 #82 #83 #84 #90 #91 #92
40 (other comment)
Close by pull request #86
41 (other comment)
Closed by various pull requests in v2.0
42 (other comment)
Some deadlines might happen repeatedly. e.g. A weekly homework submission, or a weekly post-lecture quiz.
Just like in our current CS2113T module, the lecture quizzes might be a good example.
43 (other comment)
Date is in the incorrect format, as specified in both User Guide and help command.
44 (other comment)
As explained in the User Guide and help command, words in upper case are parameters to be supplied by the user.
45 (other comment)
As explained in User Guide, command only shows longest block of free time.
46 (other comment)
Coloured teal to indicate current timeslot. Will be updated in User Guide.
47 (other comment)
Some deadlines recur, like a weekly homework submission.
Our module's post lecture quizzes are a good example of this as they have a fixed deadline of before the next lecture.
48 (other comment)
Archived data is not made available in the program. As described in User Guide.
Data is saved automatically.
49 (other comment)
As explained in UG and help command, words in upper case are parameters to be supplied by the user
50 (other comment)
As explained in the User Guide, LifEasier accounts for some time for the user to get up and get ready.
51 (other comment)
Use the showNotes command to view notes.
52 (other comment)
The input date is also incorrect. In this case the program has flagged this out first.
53 (other comment)
As explained in the User Guide, the sleepTime command allocates one hour for the user to get up and get ready. As such, 16:00 is the intended behaviour.
54 (other comment)
This functionality is provided under the deleteTask command.
@neilbaner (26 comments)1 (commented on others PR)
Do you think this is better here, or in the CliUserInterface class? I did do it this way in my iP, but I'm not sure this is necessarily the better way to do it.
2 (commented on others PR)
Does this ever get executed? I thought if there's an exception it will only execute the catch block.
3 (commented on others PR)
This is probably ok for now, but we should really do something a bit more useful to the user than just printing the stack trace, perhaps throw a custom exception.
4 (commented on others PR)
Maybe later we should create a ZeroNoteException class that all the regular exceptions will inherit from? For now this should be fine though.
5 (commented on others PR)
Should this really be static?
6 (commented on others PR)
We should probably implement a custom exception for this, but it's probably fine for now...
7 (commented on others PR)
The whole thing inside the print statement could be refactored into the TaskList class, as a toString() method or something, do you agree?
8 (commented on others PR)
This should probably be changed in the future to include a logo for Zer0Note.
9 (commented on others PR)
Could we just use input[1] for this?
10 (commented on others PR)
We could also potentially add this as a field in CliCommand, do you think that might be a good idea? Since every command will have a command word.
11 (commented on others PR)
We could have subclasses of CliCommand for commands with and without arguments, and the subclass with arguments could contain these fields to be overridden. Do you think that might work?
12 (commented on others PR)
We should add custom exceptions for all of these, catch those in CliUserInterface, and use an inherited printErrorMessage() method or something right?
13 (commented on others PR)
The function doesn't actually throw any exceptions though, as confirmed by the method signature, right?
14 (commented on others PR)
I could be wrong here, I'm sure the creators of IntelliJ know more about Java than me 😛
15 (commented on others PR)
Potentially put the title and the content on separate lines?
16 (commented on others PR)
Should we add a setTitle() as well?
17 (commented on others PR)
I think execute() should call the methods below as necessary, shouldn't it?
18 (commented on others PR)
So when you want to list the notebooks, the CliUserInterface can do something like:
CliCommand command;
if(input.startsWith("List"){
command = new List(commandArgs, noteBookList);
}
...
command.execute();
And then in the execute method:
public void execute() {
switch(commandArguments) {
case "nsp":
listNotebooks_nsp();
break;
...
}
}
Not particularly good code up here, but I think you get the idea of what I meant, right?
19 (commented on others PR)
Do you think something like ApplicationState would be a more appropriate name, since this class encapsulates more than just the mode?
20 (commented on others PR)
We only ever have one NotebookShelf per instance, so perhaps this should be renamed to notebookShelf instead of currentBookShelf?
21 (commented on others PR)
This should probably be renamed to match the field name, no?
22 (commented on others PR)
We should move this to a setter as discussed in the meeting right? Or am I remembering incorrectly?
23 (commented on others PR)
This could potentially be replaced by throwing new exception, couldn't it?
24 (commented on others PR)
Nice use of exceptions here 👍
25 (commented on others PR)
Image link appears to be dead, perhaps merge first and then fix to get the final URL
26 (commented on others PR)
Do you think this sentence could be linked a bit better to the rest of the text? As it stands, it seems a bit random to me.
27 (commented on own PR)
I decided to not worry about exceptions too much at this stage. There is a better way to do exceptions that I want to discuss later. For now this should be ok as it causes the program to not crash.
28 (commented on own PR)
If you feel like it sure!
29 (commented on own PR)
Thanks, it was one press of a lot of hard work and software engineering, yes, that's definitely what that was...
Ctrl-Alt-L
30 (commented on own PR)
I blame IntelliJ for automatically "optimising" that
31 (commented on own PR)
😃
32 (other comment)
Duplicate of #7
33 (other comment)
Duplicate of #8
34 (other comment)
Duplicate of #10
35 (other comment)
This should solve #18 as well.
36 (other comment)
We could pass the input arguments, as well as the notebook list, in the constructor perhaps?Sent from my Samsung Galaxy smartphone. -------- Original message --------From: Long Nguyen >notifications@github.com> Date: 11/10/20 21:48 (GMT+08:00) To: AY2021S1-CS2113T-T12-3/tp >tp@noreply.github.com> Cc: Neil Banerjee >neilb5400@gmail.com>, Comment >comment@noreply.github.com> Subject: Re: [AY2021S1-CS2113T-T12-3/tp] Add list() function in notebook mode (#42) @longngng commented on this pull request.
In src/main/java/seedu/duke/userinterface/command/List.java:
public class List extends CliCommand {
But the list() function needs the object as well, like listNotebooks_nsp(Notebook sampleNotebook), so I'm not sure how to code it. Also, should the List class handle input arguments like "nsp"? That doesn't seem follow the principle right?
—You are receiving this because you commented.Reply to this email directly, view it on GitHub, or unsubscribe.
37 (other comment)
I think this PR would take care of #32 and #8 as well.
38 (other comment)
Looks like there's probably some missing imports for exceptions.
39 (other comment)
Functionality of this code has been verified to be correct. I/O redirection tests have not yet been rewritten. Merging so I can fix the style to be more consistent.
40 (other comment)
I'll try to finish as much as I can by 2100 today, after which you guys can review, merge and work on it further. Please do try to follow the style, and OOP conventions, I used as much as possible for the sake of consistency. Thanks all!
41 (other comment)
We really need to rewrite the IO redirection tests...
42 (other comment)
I believe this solves #13 and #16.
43 (other comment)
Thanks for the fixes @chuckiex3! Since you requested review from everyone else too, should I wait for more people to review before merging? I think it should be fine though.
44 (other comment)
Your wish is my seedu.Duke.userinterface.Command 😃
45 (other comment)
Implemented saving for notebooks. Loading to come soon.
46 (other comment)
Loading has now been implemented! The PR is ready for review 😄
47 (other comment)
Plan to store the name of user
How do you think we should do this? Perhaps modify the Storage class to save a file like preferences.txt or something?
48 (other comment)
I suppose this can be marked as done for now?
49 (other comment)
I don't think this is particularly suited for Junit testing.
50 (other comment)
Is Storage something we should be testing with JUnit? I guess we could test the serialization and deserialization (especially with edge cases).
51 (other comment)
Ready for review and merge for now.
52 (other comment)
Marked as draft since it doesn't seem to be done quite yet.
53 (other comment)
Added Architecture Diagram
54 (other comment)
Noted in TODO near it.
55 (other comment)
Pushing this to v2.1 (the bugfix release) so we can have more time to discuss the appropriate approach.
56 (other comment)
Pushing to v2.1.
57 (other comment)
Pushing to v2.1.
58 (other comment)
Pushing to v2.1.
59 (other comment)
Pushing to v2.1.
@brandonywl (25 comments)1 (commented on others PR)
Is it perhaps better in the long run if we do it via a ArrayList
ArrayList<String> commandHelpList = new ArrayList<String>();
commandHelpList.add(AddNoteCommand.getUsageNote());
commandHelpList.add(AddEventCommand.getUsage());
commandHelpList.add(CreateTagCommand.getUsage());
commandHelpList.add(DeleteNoteCommand.getUsage());
commandHelpList.add(DeleteEventCommand.getUsage());
commandHelpList.add(DeleteTagCommand.getUsage());
commandHelpList.add(EditNoteCommand.getUsage());
commandHelpList.add(EditEventCommand.getUsage());
commandHelpList.add(ExitCommand.getUsage());
commandHelpList.add(FindCommand.getUsage());
commandHelpList.add(ListEventCommand.getUsage());
int i = 0;
resultString = "";
for (String command : commandHelpList) {
String color = (i % 2 == 0) ? COLOR_CYAN_STRING : COLOR_WHITE_STRING;
i++;
resultString += command + InterfaceManager.LS + color;
}
return resultString;
2 (commented on others PR)
Naming issue on the getCommandUsage
3 (commented on others PR)
Should we standardize using pointer Boolean or primitive boolean?
4 (commented on others PR)
Similarly, perhaps we should change to boolean if the parameter is not necessary in defining generics.
5 (commented on others PR)
Need to rename this as well as COMMAND_USAGE_NOTE
6 (commented on others PR)
Small error on my PR that wasn't caught. Should add full stop.
7 (commented on others PR)
Should also rename this. Apologies for the sloppy naming.
8 (commented on others PR)
Good catch on standardizing this so it's easier to read across the board
9 (commented on others PR)
I'm just afraid if we add more commands down the line we need human intervention to always check if the colour ordering is correct. Doesn't affect any functionality so it's not important.
10 (commented on others PR)
Will clean up naming after 1.0
11 (commented on others PR)
Perhaps follow standardization after Code Review 1.0, put an empty line between group of imports. Group the import by usage/type.
12 (commented on others PR)
You should swap the two. assertEquals method arguments are expected and actual. For the sake of debugging in the future it would be better if we caught it now
assertEquals(NOTE1_TITLE + " pinned: " + 'N', getExecutionStringInputIndex(notebook, 0));
assertEquals(NOTE2_TITLE + " pinned: " + 'Y', getExecutionStringInputIndex(notebook, 1));
13 (commented on others PR)
assertEquals(NOTE1_TITLE + " pinned: " + 'N', getExecutionStringInputTitle(notebook, NOTE1_TITLE));
assertEquals(NOTE2_TITLE + " pinned: " + 'Y', getExecutionStringInputTitle(notebook, NOTE2_TITLE));
14 (commented on others PR)
assertEquals(PinCommand.COMMAND_UNSUCCESSFUL_MESSAGE, getExecutionStringInputIndex(notebook, 5));
assertEquals(PinCommand.COMMAND_UNSUCCESSFUL_MESSAGE, getExecutionStringInputIndex(notebook, 3));
15 (commented on others PR)
assertEquals(PinCommand.COMMAND_UNSUCCESSFUL_MESSAGE, getExecutionStringInputTitle(notebook, "Title"));
assertEquals(PinCommand.COMMAND_UNSUCCESSFUL_MESSAGE, getExecutionStringInputTitle(notebook, "Random"));
16 (commented on others PR)
assertEquals(note1ExpectedOutput, getExecutionStringInputIndex(notebook, 0));
assertEquals(note2ExpectedOutput, getExecutionStringInputIndex(notebook, 1));
17 (commented on others PR)
assertEquals(note1ExpectedOutput, getExecutionStringInputTitle(notebook, NOTE1_TITLE));
assertEquals(note2ExpectedOutput, getExecutionStringInputTitle(notebook, NOTE2_TITLE));
18 (commented on others PR)
assertEquals(ViewNoteCommand.COMMAND_UNSUCCESSFUL_MESSAGE, getExecutionStringInputIndex(notebook, 5));
assertEquals(ViewNoteCommand.COMMAND_UNSUCCESSFUL_MESSAGE, getExecutionStringInputIndex(notebook, 3));
19 (commented on others PR)
assertEquals(ViewNoteCommand.COMMAND_UNSUCCESSFUL_MESSAGE, getExecutionStringInputTitle(notebook, "Title"));
assertEquals(ViewNoteCommand.COMMAND_UNSUCCESSFUL_MESSAGE, getExecutionStringInputTitle(notebook, "Random"));
20 (commented on others PR)
So it's basically to convert the event back to it's input line and stored right? E.g. add-e /t Tutorial /timing 2020-10-29 13:00 /repeat weekly /reminder 1-day. Looks great!
21 (commented on others PR)
I feel this is a great way to save and load!
22 (commented on others PR)
Was implementing this on my branch but since it's here it's great!
23 (commented on others PR)
Actually for reminder, it accepts the inputs as /remind 1-day 2-day 3-day. Not just /remind 1-day /remind 2-day
24 (commented on others PR)
eventDetails += (reminderPeriods.size() > 0) ? PrefixSyntax.PREFIX_DELIMITER + PrefixSyntax.PREFIX_REMIND : "";
for (String reminderPeriod : reminderPeriods) {
eventDetails += " " + reminderPeriod;
}
25 (commented on others PR)
Actually, what would happen if reminderPeriods that is stored was null? Should have a checker here if not a empty arraylist will be given
26 (commented on own PR)
Apologies. Automatically did it while importing through Intellij.
27 (commented on own PR)
I was considering that there should be no issues with duplicate events as they may be for future events that are named similarly. E.g I set an event but didn't know about recurring function so I created an event for every week.
28 (commented on own PR)
Noted on this point. Will make necessary changes.
29 (commented on own PR)
Thanks!
30 (commented on own PR)
Noted, will change. But it won't cause an error as JRE handles boxing and unboxing of the non-primitive types in the background.
31 (commented on own PR)
On this point, I was following the structure of prepareAddNote and how error handling was taken care of (Level of throw or at a higher level). Can confirm again if I should just throw the exception?
32 (commented on own PR)
My bad. Didn't pull a new copy yet with the changed error handling format. Mine had error handled at the problem level.
33 (commented on own PR)
Sorry! I didn't merge this branch with the upstream master. Done in the next commit.
34 (commented on own PR)
Good catch! Didn't see this
35 (commented on own PR)
Done. Thanks!
36 (commented on own PR)
I considered having a optional tag that allows to list by a certain search criteria, but I felt that in the interest of breadth-iterative development, this wasn't as key to developing recurring events as it is so I comment it out first.
37 (commented on own PR)
Done already. Thanks!
38 (commented on own PR)
Yes but in this case these are parameters not the constant so I don't think there's any coding standard violations.
39 (commented on own PR)
Apologies, forgot to refactor the names after changing it to final.
40 (commented on own PR)
Alright. I moved them from parser over to here because I thought it would be a central location + parser was getting very bulky already
41 (commented on own PR)
Alright. Apologies for the mistake. Was referring to an older version of the code base for styling and didn't change this part.
42 (commented on own PR)
I placed it here because following the rest I thought we would expect a COMMAND_UNSUCCESSFUL_MESSAGE. Can remove comment as well.
43 (commented on own PR)
I've re-worded the comment to be clearer as to what it means so it doesn't look as weird
44 (commented on own PR)
Ah didn't know this was possible!
45 (commented on own PR)
Why the whitespace? The tab itself is a whitespace
46 (commented on own PR)
I just left it in because in the future there might be need to develop looking at future reminders. But then again in the current iteration I saw no need for it / we may not develop it at all cause of limited use cases.
47 (commented on own PR)
I guess I was unclear. The input formats should be YYYY or YYYY-MM
48 (commented on own PR)
I used Object cause it was more type-safe. I was considering that when the timetable expands and has multi-year usage, we may have issues with recurring events and their reminders so I was implementing the equals function to be able to compare reminders. However, I revamped how the recurring events are displayed so this function actually has no more use.
49 (commented on own PR)
Er actually theres no significant need to do this as a class anymore. I was still learning on functional programming and functional interfaces in Java and their syntaxes so I implemented this as a stop-gap measure. Will update it.
50 (commented on own PR)
I think it's fine because even in the lecture notes they talk about assert as a error handling as well as a JUnit. It can be used for both. I implemented it here as an assert because if its not the same then there would be big problems with the entire remind functionality.
51 (commented on own PR)
Also, if there is difference in the two, it would indicate issues in the parser or implementation of the code, nothing on the user, hence exception is a less viable option.
52 (commented on own PR)
Was causing a bug with recurring values
53 (commented on own PR)
I did it this way initially but my concern with handling it in the formatter is that it breaks encapsulation and increases coupling. Violates the "tell-don't-ask" principle, but handing it to the formatter improves single-responsibility principle.
54 (commented on own PR)
What do you mean?
55 (commented on own PR)
Oh I did it as a separate function for compatability to other PR where I do listing. No point re-writing code just to iterate the same lines.
56 (commented on own PR)
My considerations are formatEvent would be heavily utilized when listing events. When listing multiple events we would most likely be listing them in the same box so it would make sense to have a separate function that formats them as a string.
57 (commented on own PR)
See above regarding formatEvent
58 (commented on own PR)
Tried this and the line got too long and unreadable.
59 (commented on own PR)
Sorry but what's the significance of doing that as opposed to +=?
60 (commented on own PR)
While possible, I'd lose the information on the name of the month and at each event, I'll have to check the month and see if it's different at each step. I'll basically be shifting the processing of each event from Event to here. Is there any significant reason why? If not I feel there's no added benefit to doing so.
61 (commented on own PR)
I'll see what I can do as I am already currently pushing in the year and month already. May be able to cut down the data struct shape
62 (commented on own PR)
Done from earlier PR
63 (commented on own PR)
Will resolve convo when confirmed after merging.
64 (commented on own PR)
I was thinking of doing this because it may have edited the data but failed the saving
65 (commented on own PR)
Nope! It'll display as Reminder: None
66 (other comment)
Are we done with this issue or do we close it?
67 (other comment)
Noted. So for this we should highlight it in the developer guide right?
68 (other comment)
Able to recreate bug when doing [list-e] vs [list-e ]. Spaces after list-e causes this issue.
69 (other comment)
Okay thanks for the clarification! Closing this.
70 (other comment)
Resolved.
71 (other comment)
Resolved. Will push branch together with refactor of listEventCommand.
72 (other comment)
Was not tagged with the PR that added tags on event. #136
@samuellleow (25 comments)1 (commented on others PR)
Should the creating of a new instance be inside this function instead?
public TeamMemberList() {
members = new ArrayList>>();
}
2 (commented on others PR)
Should we account for zero team members? Catch an error?
3 (commented on others PR)
Good implementation to switch between different views
4 (commented on others PR)
Would extracting to the UI class be neater?
So everything related to printing will be under user interface.
5 (commented on others PR)
Similar case here, would extracting the printing function to UI class be neater?
6 (commented on others PR)
Similar case here, would extracting the printing function to UI class be neater?
7 (commented on others PR)
Would it be clearer if the name of the variable is changed to secondProjectIndex.
8 (commented on others PR)
Would combining these statements into one single command be neater. Use line wrapping for the different lines of output.
9 (commented on others PR)
I think that output-ing a warning for the user and ask them to provide a full name or have them provide a specific index would be better.
10 (commented on others PR)
Can consider changing the exception name to something else other than Duke, unless we are still naming our program Duke. (small issue)
11 (commented on others PR)
I feel that this part is confusing. I understand that it is supposed to throw an error, however the exception message is "add task", maybe change it to "add task error"?
12 (commented on others PR)
similar case here, would changing it to "add project error" be clearer?
13 (commented on others PR)
similar case here, would changing it to "switch error" be clearer?
14 (commented on others PR)
You can check my implementation for this variable so that when we print out the description, there will be spacing in between the words.
15 (commented on others PR)
require an else statement? We can implement the "deadline" function for projects as well.
I would be able to do that since I need to combine it with printing out the statement during the "select" function.
If approved, I will create an issue for it and start working on it.
16 (commented on others PR)
Im not sure about the rest, but I got confused when i first read the code.
Maybe we can change the name to getTaskInsideAProject()?
17 (commented on others PR)
same here, would changing to createTaskInsideAProject be better?
18 (commented on others PR)
same here, would changing to deleteTaskInsideAProject be better?
19 (commented on others PR)
same here, would changing to getNumberTaskInsideAProject be better?
20 (commented on others PR)
Should we extract this to Ui class or Exception class??
21 (commented on others PR)
Should we extract this to Ui class?
22 (commented on others PR)
For future reference, should we remove this as the task does not require multiple inputs.
23 (commented on others PR)
For future references, should we remove this??
24 (commented on others PR)
I don't think there is a need for IndexOutOfBoundsException here.
25 (commented on others PR)
I think we should add a try catch statement here, seems like there is a need to catch an error here if the ID provided by the user might not be within the range of the task arraylist
26 (commented on own PR)
hmmm, you are right I can combine it together with the toString() function
27 (commented on own PR)
Fixed!!
28 (commented on own PR)
Fixed!!
29 (commented on own PR)
Fixed!!
30 (other comment)
Fixed!!
@Aseanseen (24 comments)1 (commented on others PR)
Violates coding standard due to *
2 (commented on others PR)
This method seems a bit long, maybe do more abstraction
3 (commented on others PR)
Need to remove the null due to updated constructor for DeleteCommand. 1 more occurence below.
4 (commented on others PR)
Violates coding standard for ternary expressions
5 (commented on others PR)
Unsure why the spaces?
6 (commented on others PR)
Not sure about the readability of this line
7 (commented on others PR)
Need to add a space between ) and { to prevent checkstyle violation
8 (commented on others PR)
There are syntax errors here, see the checks tab for more info
9 (commented on others PR)
Not sure if this is magic number?
10 (commented on others PR)
Maybe use .isEmpty()?
11 (commented on others PR)
I believe the command should be changed to "edit -t"
12 (commented on others PR)
Maybe append with COMMAND_WORD here instead
13 (commented on others PR)
Curious why javadoc deleted? 1 more occurence below
14 (commented on others PR)
I think the COMMAND_WORD should exist in the parent class EditCommand instead
15 (commented on others PR)
Same concern that COMMAND_WORD should exist in the parent class EditCommand instead
16 (commented on others PR)
Now the manager is able to take values from Mon to Fri. Will attempt to update it to be more date specific.
17 (commented on others PR)
Maybe set a variable to the set so that you do not have to keep repeating the getModulesMap()
18 (commented on others PR)
Maybe assign a value to moduleCode.getModuleCode() so that you do not keep calling it
19 (commented on others PR)
I think I have seen this method appear multiple times in many parsers, could we extract it to a method?
20 (commented on others PR)
Is there a reason why this is protected rather than private?
21 (commented on others PR)
Format for the deadline is d-M-yyyy HHmm\
e.g. add -t read chapter 1 -by 12-9-2020 1400
22 (commented on others PR)
Agreed, because the task index can only be found through list
23 (commented on others PR)
Maybe try to use enums instead to improve readability?
24 (commented on others PR)
Same comment as above, I do see the explanation in the javadoc but it might be better to change to enums
25 (commented on own PR)
Pull request is failing due to enabling of the gradle checkstyle. This means there are files that are failing the checkstyle, please check the checks tab and amend the files thanks
26 (commented on own PR)
Thanks, added
27 (commented on own PR)
Unintended edits
28 (commented on own PR)
Ok, will make amends
29 (other comment)
I think the commented code can be removed. But otherwise, looks good to merge.
30 (other comment)
Amended the AddCommand, DeleteCommand, enum in Parser. Checks are failing due to the functions it requires from other classes.
AddCommand:
testDeadline(String deadline)
addTask(String desc, LocalDateTime dateTimeOfDeadline)
addModule(String desc)
execute()
DeleteCommand:
deleteTask(int taskId)
deleteModule(String moduleCode)
execute()
31 (other comment)
Looks good to merge
32 (other comment)
Looks ok, but the Parser needs more prepare commands (delete, list, done)
33 (other comment)
could u add, a AddCommand.FORMAT
a constant that outputs the correct format on how a addcommand will be read
Ok, added
34 (other comment)
Implemented on purpose, but has been amended.
35 (other comment)
There is some bug with this PR, checks are running forever.
36 (other comment)
What's the bug?
Used to be a bug with the JUnit tests, but it has been fixed.
37 (other comment)
Accidentally closed this PR, reopening
38 (other comment)
New unicode character fixes the cross and tick
@wish2023 (24 comments)1 (commented on others PR)
Nice job on creating the package early
2 (commented on others PR)
Yup we don't need this anymore!
3 (commented on others PR)
Make sure to have this on two seperate lines
4 (commented on others PR)
Brilliant
5 (commented on others PR)
Well organised the code looks really neat!
6 (commented on others PR)
Maybe consider renaming the "time" parameter to "startTime" to avoid confusion
7 (commented on others PR)
Consider renaming the "time" parameter to "startTime" here too as this is the time the task should task.
8 (commented on others PR)
Consider renaming the "Commands" class to "Command" as this relates to a single command.
9 (commented on others PR)
Yup good naming!
10 (commented on others PR)
This looks good!
11 (commented on others PR)
It may be better to leave this in lowercase, as this is what our user guide says. We can convert this into an enum in our next version?
12 (commented on others PR)
Consider renaming "c" to "command"
13 (commented on others PR)
Renaming this to taskList.addTask would be great 😃
14 (commented on others PR)
Good that the importance is being converted to upper case here!
15 (commented on others PR)
Remember that the user will type "high" instead of "HIGH"
16 (commented on others PR)
I think we can remove the first addTask() . The method right below this seems to have the same functionality in addition to assigning a unique index value
17 (commented on others PR)
Noted that the user will now see the list from the timetable class only
18 (commented on others PR)
Looks great!
19 (commented on others PR)
This test will return true once 23-10-2020 is in the same week as the current date. Perhaps there's a better way to generate a false case. Maybe the recurrence can be (LocalDate.now() + 7 days).toString()
20 (commented on others PR)
This test is exactly the same as testIsTaskIncluded_filterByToday_returnsTrue(). Perhaps a better input could be a day that lies in the same week as LocalDate.now and adding this as a parameter.
21 (commented on others PR)
Good idea to simplify the code
22 (commented on others PR)
Will we have to change the dates EXPECTED.TXT everytime we test?
23 (commented on others PR)
Remember to update this new default value in user guide
24 (commented on others PR)
Seems like you have a getDurationString() it may be easier to use that?
25 (commented on own PR)
Noted! Has been changed to edit
26 (commented on own PR)
@amanda-chua take note method name has been changed to addTask
27 (commented on own PR)
Whoops forgot to remove this
28 (commented on own PR)
ooh good spot
29 (commented on own PR)
I just implemented this for debugging purposes I have removed it now
30 (commented on own PR)
Whoops forgot to delete
31 (commented on own PR)
Yup let's change it to logicManager once that's merged
32 (commented on own PR)
Oh whoops
33 (commented on own PR)
Okay I'll delete this and add it in another branch
34 (commented on own PR)
This gives me a syntax error for some reason
35 (commented on own PR)
Oh hmmm I thought it may be better to include the actor for the parser?
36 (commented on own PR)
Yup for isMidnightClash the algo basically checks if both the end times are less than their respective start times. If so, both tasks go past 12am which means there's a clash at the 12am mark.
37 (commented on own PR)
As in ATHENA still alows task to be added provided they end at 12am but not past that
38 (commented on own PR)
okayy thanks! will make the change
39 (other comment)
Left some comments about some parts of the code, some are just suggestions, the important thing is the
mainfunction insideForecastFilter. I think you forgot to remove it?
Also, can you add Junit test cases for
ForecastFilter? Or since we are down on time we can also merge this pr first and add that later.
Noted, will add Junit test cases for ForecastFilter tomorrow
40 (other comment)
Junit test cases are now created for ForecastFilter
41 (other comment)
Note recurrence will still be "today", I have just created a recurrenceDate attribute. This is to make it easier future versions when recurrence will be a day of the week, so it'll be good to leave that as a string.
42 (other comment)
Supposed to be like this. Other members please confirm and close this issue.
43 (other comment)
I believe this can be done using r/DATE where DATE is any date you intend to add the task.
44 (other comment)
I believe this is actually #200. The assignments are being successfully added as ATHENA mentions but there may be a prior invalid recurrence.
45 (other comment)
This issue doesn't seem to exist on my side. Other members please help to confirm
46 (other comment)
I think we should leave the start ID as 0? As it is a task ID not really a number in a list. Other members, what do y'all think?
@iamchenjiajun (23 comments)1 (commented on others PR)
I think this part may throw an exception when the user doesn't enter an integer input.
2 (commented on others PR)
Otherwise I think it looks good to merge 👍
3 (commented on others PR)
I only used this line to check if the user entered valid arguments but can be removed for your part of the code if needed.
4 (commented on others PR)
Same for this as other comment.
5 (commented on others PR)
Typo here
6 (commented on others PR)
I was thinking that if we only print a new sorted list using the "list" command, the users will never know which task they are setting as "done" or "deleted".
7 (commented on others PR)
Yea that makes sense.
8 (commented on others PR)
I was wondering if these fields should be part of Item or they should be part of Task because not all items we're adding might have these fields? For example if new classes like Expenses extends Item then it may not need all these fields, or let the fields be set.
9 (commented on others PR)
Similarly not every item is going to save in the same format so maybe it might be better to override this in each subclass instead of putting them in the Item superclass.
10 (commented on others PR)
Maybe having the fields in Item is okay, but it's to put the getters/setters in Tasks or related subclasses so not every Item has access to it?
11 (commented on others PR)
This file can be deleted since it was added to .gitignore
12 (commented on others PR)
Maybe it will be better to move this to a new method called CommandCreator.parseAddCommand that returns a Command. Then put the rest of these code inside the method that will call either of the two createAddCommands.
13 (commented on others PR)
Consider removing this file because other users may not use it (add to .gitignore)
14 (commented on others PR)
Maybe it would be better if "isReturn" and "futureDate" is in Book.java (not a feature of the Item but of Book)
15 (commented on others PR)
Maybe all the book related functionality should be in Book
16 (commented on others PR)
Same as previous
17 (commented on others PR)
Same
18 (commented on others PR)
Maybe BookList related functionality should be in BookList
19 (commented on others PR)
Same
20 (commented on others PR)
Same
21 (commented on others PR)
Yup I think it LGTM except that Book related functionality should be moved from Item to Book and same for BookList related functionality from Item.
22 (commented on others PR)
what's this
23 (commented on others PR)
maybe this whitespace isn't needed
24 (commented on own PR)
Maybe it's fine because it finds the nearest wednesday so that the user can just enter a date range without worrying about the actual starting date.
25 (commented on own PR)
Yea sure
26 (other comment)
Add EXPECTED.TXT and input.txt IO redirection tests from the iP
27 (other comment)
oops checkstyle failed
28 (other comment)
Adding a task
Format: add TASK_NAME [by/DD-MM-YYYY-HH:MM] [at/DD-MM-YYYY-HH:MM] [p/PRIORITY_NUMBER] [class/CLASSIFICATION]
Adds a task with a given task name.
Example: add tP meeting,
add tP meeting by/16-09-23:59 at/15-09-2020-11:00,
add tP meeting by/16-09-23:59 at/15-09-2020-11:00 p/1
add tP meeting by/16-09-23:59 at/15-09-2020-11:00 p/1 class/project
Expected output:
Noted. I’ve added this task.
tP meeting by: 16-09-2020-23:59 @ 15-09-2020-11:00
29 (other comment)
LGTM
30 (other comment)
LGTM!
31 (other comment)
LGTM!
32 (other comment)
It seems to be failing I/O redirection tests, try modifying EXPECTED.TXT with the new contents of ACTUAL.TXT and verify if it's the intended behaviour.
33 (other comment)
Might have to change input.txt too since some of the commands are changed.
34 (other comment)
Consider refactoring creating the command as a new method in CommandCreator class using the design patterns. You can pass in the full command or parsed command as an argument for the method. Check the add command and set command for an example. I didn't move everyone's commands because I didn't want to claim credit for the code.
35 (other comment)
There's so many constructors to ListCommand now, I wonder if we can actually pass in an enum to the ListCommand instead and use a switch statement in the execute method. But that will be for another time I guess (maybe v2.1 or another PR sometime later).
But then with enums we'd have to pass in blank arguments for "category" when listing category, so another point to consider.
36 (other comment)
Other than the minor refactoring I think its LGTM!
37 (other comment)
This should be ready to merge.
38 (other comment)
Can add the sequence diagram to the DG
39 (other comment)
LGTM!
40 (other comment)
There is no c/ tag here. It is explicitly stated in the UG that optional arguments take the form of >key>/>argument>. There is no argument, hence the "c/" forms part of the description for the task.
41 (other comment)
However I will make sure that / does not appear in the description and make sure it throws a DukeException.
42 (other comment)
Hi, actually if you do not input a priority, the default value of any task will be set as p:0. We will include this in the User guide so it will be clearer for users.
Yes, the form of an argument is stated to be >key>/>argument>, thus p/ is treated to be part of the description, as there is no >argument>.
@felixhalim (23 comments)1 (commented on others PR)
It would be better to change to getProductName();
2 (commented on others PR)
I think it is okay to put it here since this comment is command-specific.
3 (commented on others PR)
I think it is okay to call it here since it is command-specific
4 (commented on others PR)
It would be better to mention specifically what are being imported instead of using wildcard *
5 (commented on others PR)
Good job on coming up with the sort algorithm, Kian En! I would move this to AddPlaceCommand.java so that it sort only if the user added a new place.
6 (commented on others PR)
It supposed to be userInput.startsWith("search "). If not, input like searchex will be detected as valid command.
7 (commented on others PR)
Yep, this has been resolved.
8 (commented on others PR)
It is preferred to mention explicitly which packages are imported
9 (commented on others PR)
What is the difference between this and line 33?
10 (commented on others PR)
No newline here
11 (commented on others PR)
This supposed to be rmdir /s /q trippie_data
12 (commented on others PR)
del is used to delete file. Based on runtest.sh looks like you wanted to delete a directory and its content, right? Use rmdir /q /s trippie_data instead, it is equivalent to rm -rf
13 (commented on others PR)
Since your PC OS is macOS and mine is Windows (Error is in .bat file which is executable in Windows). I will take-over this error.
14 (commented on others PR)
Isn't this deleteExpenseCommand?
15 (commented on others PR)
Add newline here
16 (commented on others PR)
Another newline here
17 (commented on others PR)
An alternative way is to use .isEmpty() method
18 (commented on others PR)
Please add newline here
19 (commented on others PR)
Perhaps deleting this method as we aren't going to perform any test?
20 (commented on others PR)
Great implementation of regex
21 (commented on others PR)
Good, this way the sorting algorithm will terminate early 😄
22 (commented on others PR)
Good job in completing the testing guide!
23 (commented on others PR)
Sorry, after checking it, I think both of the approaches will lead to same result 😄
| is bitwise or, can you explain why you choose this approach?
24 (other comment)
This is just a test
25 (other comment)
Please review #22
26 (other comment)
Apparently Java has a problem with a dash. So, I suggest implementing / (slash) instead of - (dash) for the command format. @ShawnTanzc need to adjust accordingly.
27 (other comment)
Apparently Java has a problem with a dash. So, I suggest implementing / (slash) instead of - (dash) for the command format. @ShawnTanzc need to adjust accordingly.
28 (other comment)
It doesn't pass Gradle check
29 (other comment)
remember to update the help stuff
Do you mean on the HelpCommand.java?
30 (other comment)
This is fixed in #75, right?
@anqi20 (23 comments)1 (commented on others PR)
Good Job!
2 (commented on others PR)
I think a better naming for this would be "questions"
3 (commented on others PR)
I think we should all following this naming convention of "all...".
4 (commented on others PR)
All these naming makes it easier to understand!
5 (commented on others PR)
The JUnit test looks good!
The naming of the method is accurate as well.
6 (commented on others PR)
Would "chosenOption" be a better way to name it?
7 (commented on others PR)
Nice, using the common interface makes everything easier and neater!
8 (commented on others PR)
I'm a bit confused with this. It's a add method but it removes the option...
9 (commented on others PR)
Nice catch on the accessibility
10 (commented on others PR)
Maybe we could add something here for users who had wrote commands not in our list. I can create something in Ui
11 (commented on others PR)
Awesome refactoring!
12 (commented on others PR)
Just some minor details, would the first part of the naming be better to follow the naming in Topic? getDescription_... Similar to getsQuestionList_questionList_returnsQuestionList( )
13 (commented on others PR)
Oh thank you for adjusting the formatting!
14 (commented on others PR)
Oh sorry I missed this out!
15 (commented on others PR)
Oh, it sounds a lot nicer!
16 (commented on others PR)
Nice catch! Sorry for that error!
17 (commented on others PR)
Would it be better if we have a few words to introduce the diagram first?
18 (commented on others PR)
Nice catch on removing the empty constructor too!
19 (commented on others PR)
Ah this makes it look a lot cleaner and easier to understand! Thanks!
20 (commented on others PR)
Thank you for doing up the table of contents! It looks neater and easier to understand now!
21 (commented on others PR)
Thanks for removing the magic literals!
22 (commented on others PR)
Nice catch!
23 (commented on others PR)
This makes it a lot clearer!
24 (commented on own PR)
Ok, I will take note of this and change them. Thanks for the explanation!
25 (commented on own PR)
👍
26 (commented on own PR)
Ahh, slipped my mind! Thank you for pointing it out!
27 (commented on own PR)
Ok done!
28 (commented on own PR)
Ok, will look out for it. Thank you!
29 (commented on own PR)
Okie!
30 (commented on own PR)
Oh ok, I think it's 4! Thank you for spotting it!
31 (commented on own PR)
Okie, I will look into this. Thank you!
32 (commented on own PR)
Updated! Thank you!
33 (commented on own PR)
Oh ok, I have changed this too! Thank you!
34 (other comment)
We have decided that the users can just change the database via the Json files
35 (other comment)
Fixes #119
36 (other comment)
The user guide has already been updated.
37 (other comment)
User guide has been updated
@abnermtj (20 comments)1 (commented on others PR)
perhaps remove some of the old Duke descriptions
2 (commented on others PR)
perhaps a more apt name than executeFunction(), idk
3 (commented on others PR)
maybe remove the spacing between first line of the method and the next, for consistency
4 (commented on others PR)
er like the line i commented on said duke.txt and list of tasks
5 (commented on others PR)
i'll probably try to move this to cheat sheet class
6 (commented on others PR)
Not really sure about the use of super here since DirectoryIsEmptyException didn't do it
7 (commented on others PR)
to keep consistent with other if statements, might wanna do a .trim() here
8 (commented on others PR)
not sure if line 62 to 67 is needed. line 65-67 seems like it can go into 69.5
9 (commented on others PR)
A few of the class names sound more like method names. Perhaps instead of ParseDataFIle, DataFileParser
10 (commented on others PR)
perhaps parse execution can be renamed it took me a while to understand 94 - 97. perhaps it could be renamed to parsedData or something
11 (commented on others PR)
it seems like for both read and write classes will create Files if not present already, perhaps make It only the job of write to create both the folders and files
12 (commented on others PR)
perhaps this could be aptly named as my understanding is that it points to an actual file and not a directory.
13 (commented on others PR)
clean code makes me go yes
14 (commented on others PR)
good method namings
15 (commented on others PR)
big brain
16 (commented on others PR)
probably can use getCheatSheet(name) instead
17 (commented on others PR)
I'm not really sure if they would be nitpicky on the use of '*', I've been trying to avoid it because of that.
18 (commented on others PR)
Code looks clean, LGTM!
19 (commented on others PR)
i think so but it's really ugly and I hate it
20 (commented on others PR)
perhaps cheatSheetList can be moved to the parent class Command
21 (commented on own PR)
alright fixed!
22 (commented on own PR)
kk
23 (commented on own PR)
alright! done
24 (commented on own PR)
Alright done!
25 (other comment)
Ops i merged forgetting to check the tests LOL Brandon has fixed the tests
26 (other comment)
Done for view command
27 (other comment)
alright, will do
@amanda-chua (19 comments)1 (commented on others PR)
For this i will be parsing in an integer alr so i think can remove the getTaskNumber method.
2 (commented on others PR)
For this i will be parsing in an integer alr so i think can remove the getTaskNumber method.
3 (commented on others PR)
Can replace all the println to UI methods.
4 (commented on others PR)
Remove one empty line from here.
5 (commented on others PR)
Remove empty lines from here.
6 (commented on others PR)
Remove one empty line from here.
7 (commented on others PR)
Remove one empty line from here.
8 (commented on others PR)
Remove one empty line from here.
9 (commented on others PR)
Change the importance to notes
10 (commented on others PR)
Remove extra line
11 (commented on others PR)
add space before String
12 (commented on others PR)
remove the empty lines
13 (commented on others PR)
remove the empty line
14 (commented on others PR)
I think taskListWithoutTask should be editedTaskList
15 (commented on others PR)
I think taskListWithoutTask should be taskListWithDone
16 (commented on others PR)
Change taskListWithoutTask to taskListWithDone
17 (commented on others PR)
Might want to change the method name to smt like deleteTask_successfully?
18 (commented on others PR)
Maybe can give examples of ABC
19 (commented on others PR)
List out the commands individually instead of the *
20 (other comment)
For add command: throw exception when name or time of task is not in the user input.
21 (other comment)
#225
@josephhhhhhhhh (17 comments)1 (commented on others PR)
good job!
2 (commented on others PR)
Ah yes, this makes sense. We can cut down on unnecessary variables this way!
3 (commented on others PR)
The DisplayableList class seems a bit redundant at the moment as its functions are very similar to an actual ArrayList. We should look into developing this class more to better manipulate the lists in our program.
4 (commented on others PR)
The coding logic here looks really good! Nice work!
5 (commented on others PR)
Since you're getting QuizQuestionList with this function, would calling the new QuizQuestionsManager object quizQuestionList instead of quizQuestionsManager?
6 (commented on others PR)
The diagrams all look really good! Nice.
7 (commented on others PR)
Looks really good, the explanation is methodical, while using concise language. Nice job!
8 (commented on others PR)
Thank you for helping me replace my magic literals as well! All of it looks good to me. Will merge it in!!
9 (commented on others PR)
Nice, you remembered to use System.lineSeparator() instead of "\n"!
10 (commented on others PR)
Good thinking, this interface will allow us to differentiate functionality more cleanly between certain lists that are purely for display/access, vs others that the users might wish to affect. Nice implementation!
11 (commented on others PR)
Nice removal of magic literals.
12 (commented on others PR)
LGTM, now bookmarks can be saved across multiple uses of the program.
13 (commented on others PR)
Looks way neater, nice!
14 (commented on others PR)
This looks really good! Thank you for settling this!!
15 (commented on others PR)
Well implemented!
16 (commented on others PR)
Nice, this covers a lot of ground.
17 (commented on others PR)
Alot of coverage here as well, great implementation of the Junit test!
18 (commented on own PR)
Good point! Will make the recommended alteration right away.
19 (commented on own PR)
Ah yes, pardon my folly, will adjust it in future. Thank you!
20 (commented on own PR)
It was initialised above the if loop.
21 (commented on own PR)
Alright, noted! Will look into how to make the implementation better in future!
22 (commented on own PR)
Roger, this makes a lot of sense. Thank you!
23 (commented on own PR)
Understood! And done!!
24 (commented on own PR)
Understood! And done!!
25 (other comment)
Overall, well done changing your name.
@keke101 (16 comments)1 (commented on others PR)
I think it would be better if you change this to plural form since it contains a list of members. Likewise for the class name.
2 (commented on others PR)
I agree, we should split them into subclasses, inheriting MemberCommand for example. It's what the TA suggested.
3 (commented on others PR)
Yeap, Haoxiang, remove this file then commit again to the same branch, then we will merge this pull request
4 (commented on others PR)
I think it is ok, we can leave it as it is now and we will settle the package names later on
5 (commented on others PR)
I think wait for the next person to review then merge.
6 (commented on others PR)
What's the reason for using static members? This will be a problem when it comes to multi-project management.
7 (commented on others PR)
"member" can be changed to "members" which will make more sense as it is a list of members.
8 (commented on others PR)
Yeah. Since it is not static, you still need to pass the project object around to be manipulated, and that should be the way since there will be multi-project management in v2. This is because we need to determine which exact project we are manipulating.
9 (commented on others PR)
No need for new Hashtable>>(); since you are overwriting it at line 15.
10 (commented on others PR)
Should we trim the values at Parser instead?
11 (commented on others PR)
Sorry, missed this out, this can be SLAP-ed right? So that REMOVETASK and other actions that requires array list can use the same function.
12 (commented on others PR)
Alright
13 (commented on others PR)
I think no need to nest another try-catch, you can just put another catch for NumberFormatException in the other try-catch.
14 (commented on others PR)
Got a getter for nextId already, at line 37
15 (commented on others PR)
Can you remove this line? This is because line 34 has set exit = true. In Duke.java line 63, I have already added the check to check if the exit = true. Also, the Duke.java has to call sm.save() before it exits.
16 (commented on others PR)
The code analysis stated this line don't need StringBuilder since you are only appending on string. you might wanna change that.
The newline should also use %n instead of \n. %n works similarly like the System.lineSeparator().
17 (commented on own PR)
@gmit22 Can I double check with you if this is supposed to be == or !=?
18 (commented on own PR)
This PR added a shouldSave boolean variable to all command classes. All command classes are required to define the shouldSave value and I have edited all the command classes to define it. Basically, those that cause changes to the data will set shouldSave to true. If you look at Duke.java, it checks the shouldSave value of the command class that has executed and invokes the save if shouldSave is true.
In your case, the project should have been successfully created and the save happens before the crash. That is why it shows the project that was created in the first place.
19 (commented on own PR)
Yeap
20 (other comment)
Functionalities I think are good to go but I think some variable names should be changed. For example like those that contains a list of elements, the variable name should be plural.
21 (other comment)
Looks good to me, can merge imo.
22 (other comment)
Update: JSON.simple library is already approved
23 (other comment)
Looks good to me, I think can be merged.
24 (other comment)
checkStyle is failing. You should fix them first before you make final commit.
25 (other comment)
Good to merge. However, we need more discussion of the structure of Ui class because I feel it is too verbose. Maybe we can proceed with the commit for now then modify it later on.
26 (other comment)
Looks good, can be merged
27 (other comment)
Need to resolve the conflict first.
28 (other comment)
Duplicated issue
29 (other comment)
There's conflict that needs to be resolved.
30 (other comment)
Have you tried enabling the assertions? Link
31 (other comment)
You are talking about the Unit Test assertions is it? Those assertions are different from the normal assertions. Normal assertions are placed in the code using the assert keyword, therefore the link I have provided only works for normal assertions. Anyway both have different purpose, so yeah.
32 (other comment)
I think we can merge this one, then you create another PR request for the JUnit.
33 (other comment)
Looks good to merge.
Thanks!
34 (other comment)
Don't merge this first, idk why got duplicated checks... Probably screwed up with the repo just now.
35 (other comment)
From what I see in your branch's Project.java, it might be the case that toJson did not include SprintRetrospectiveManager data. Hence when the save happens, nothing is saved for SprintRetrospectiveManager and its sub-objects. So when you reload the program and try to access it, it is empty. You can verify this by inspecting data/data.json file to see whether the data for SprintRetrospectiveManager is inside.
You can refer to how I did it for SprintManager, ProjectMembers and TaskManager. They should be similar to your class.
@alstontham (16 comments)1 (commented on others PR)
Can call "ui.printList(ArrayList>Task> tasks)" and let the ui handle the printing
2 (commented on others PR)
Can call the printList() function from ui and pass it the filtered list (so tasklist will still handle the filtering)
3 (commented on others PR)
Could call ui method printTaskEdited(task) to print out the edited task to the user
4 (commented on others PR)
Could call ui method printTaskDeleted(task) to print out the deleted task here as well
5 (commented on others PR)
Can call ui method printTaskAdded(task) to let users know what task they added
6 (commented on others PR)
Can call the ui method printTaskDone(task) to let users know which task they marked as done
7 (commented on others PR)
@alstontham The timetable given to the
Uiwill be a list ofTimetableDayobjects, each containing a date and a list ofTasks. So you can work on printing that now.
Ok! Will work on this
8 (commented on others PR)
@alstontham I think it would be good to overload the
toStringmethod so that we can print the object directly. You can work on printing out aDateandTaskListon your side first then we can move that code here later.
Or you can fetch this branch and modify it, then make a pull request to my branch.
Sure, will see what I can do
9 (commented on others PR)
would checkstyle flag this extra space?
10 (commented on others PR)
would checkstyle flag this extra space?
11 (commented on others PR)
I'm not sure if the main method is supposed to throw the exception? The exception should be handled at a "lower" method
12 (commented on others PR)
Maybe a more descriptive method name would be helpful?
13 (commented on others PR)
Can remove extra spaces here
14 (commented on others PR)
Do you want to shift the methods that print out the Timetable to Ui?
15 (commented on others PR)
Could you add a "\n" at the end to make the spacing of the Ui outputs consistent?
16 (commented on others PR)
Same here, add "\n" to making spacing of outputs consistent
17 (commented on own PR)
Hmm not sure why it shows up like this on github but I definitely had it on two separate lines in my IDE
18 (commented on own PR)
oops my bad
19 (commented on own PR)
Ok, I'll amend it
20 (commented on own PR)
will fix this
21 (commented on own PR)
oh this wasn't in my commit but was accidentally added onto this PR
22 (commented on own PR)
I'll change it to AddMissingRequiredParametersException
23 (commented on own PR)
This exception isn't finalized yet as I need to wait for the edit command to be fixed so I can test it.
24 (commented on own PR)
fixed!
25 (other comment)
Fixed the checkstyle issues in Ui.
26 (other comment)
Resolved in #55
27 (other comment)
I have added exceptions to handle when no index and an invalid index has been passed to delete in #48
28 (other comment)
Yes, this PR partially addresses #73, however I have yet to properly implement exceptions for list and edit as I need to wait for those commands to be fixed first.
29 (other comment)
Sorry my bad, I thought I changed this in a previous commit but I think it got changed back.
30 (other comment)
I refactored the color and UI code in this PR so it can be compared with the UI information in the DG
31 (other comment)
I haven't finished editing the DG yet, will push some more commits soon!
32 (other comment)
Square brackets around t/TIME, add view command in the help method
33 (other comment)
I added an if statement to check if there is no deadline and prints the message accordingly. Addresses #159
34 (other comment)
Make the instructions in the UG more clear.
35 (other comment)
Same as #207
@e0425705 (16 comments)1 (commented on others PR)
Could have a final static for this magic number
2 (commented on others PR)
alist should be in camelCase
3 (commented on others PR)
adatetime should be in camelCase
4 (commented on others PR)
this comment could be added into the ui
5 (commented on others PR)
can refactor this into ExceptionMessages class
6 (commented on others PR)
magic number here, perhaps can make it as a final variable
7 (commented on others PR)
magic number present here
8 (commented on others PR)
naming should be InitialiseUser instead of Initialiseuser
9 (commented on others PR)
the naming of this should be activityMultiple instead
10 (commented on others PR)
presence of magic numbers
11 (commented on others PR)
presence of magic numbers
12 (commented on others PR)
perhaps naming of firstString and secondString would be more appropriate?
13 (commented on others PR)
these variables should be in caps
14 (commented on others PR)
this should be in caps
15 (commented on others PR)
perhaps a better naming could be done for this?
16 (commented on others PR)
same issue for this, perhaps a better naming could be done for this?
17 (commented on own PR)
noted
18 (commented on own PR)
noted
19 (commented on own PR)
HAHAHA oops thanks
20 (other comment)
fixes #41 , #27 , #45
21 (other comment)
fixes #18 , #19 , #21 , #22 , #23
22 (other comment)
fixes #18 , #19 , #21 , #22 , #23
23 (other comment)
fixes #88
24 (other comment)
fixes #88
@adhy-p (15 comments)1 (commented on others PR)
A very minor thing but I think you missed a whitespace after the ':' in DETAILS.
2 (commented on others PR)
Whoa Theo god used assertions alrd 👍
3 (commented on others PR)
I think can change to something like this for better readability
cheatSheetFileBuild
.append(DETAILS)
.append(WHITESPACE)
.append(cheatSheet.getCheatSheetDetails());
4 (commented on others PR)
Isn't it better to just write the stuffs in storeCheatSheet() inside executeFunction() directly?
5 (commented on others PR)
Why do you replace the string with whitespace " " instead of an empty string "" (?)
6 (commented on others PR)
Will work on it 👍
7 (commented on others PR)
👍
8 (commented on others PR)
Actually for this one, do you want me to add a method to remove cheatsheet by index in addition to the current remove by name?
9 (commented on others PR)
For the next iteration, I think can move this to UI class. Not urgent tho
10 (commented on others PR)
I think this one should be done by the constructor, or at least outside the for loop.
11 (commented on others PR)
If can't find programmingLanguage and keyword, I think can just print everything (coz no filter?). What do you think?
12 (commented on others PR)
hmm for this one I think just do it similar to our IP? create a variable inside a for loop in print method then just print the variable?
13 (commented on others PR)
wow you guys so advanced.. using hashmap and stuff 💯
14 (commented on others PR)
Should we add .trim() to avoid this?
15 (commented on others PR)
shall we change this to /s?
16 (commented on own PR)
Noticed this one is duplicated from getIsFavourite
17 (commented on own PR)
Currently when I tried
/delete /i 2
The description map will return
NAME -> NULL
INDEX -> 2
So without the null check, it will always try to get the cheatSheet by name even when the user tries to get it by its index
@ivanderjmw (15 comments)1 (commented on others PR)
I think the variable name userInput is better than command.
2 (commented on others PR)
A better exception name would be BadFormatException.
3 (commented on others PR)
This needs to be called from Ui as well, once its implemented.
4 (commented on others PR)
userInput will be a better variable name than command.
5 (commented on others PR)
This shouldve been an abstract class for all the other commands.
6 (commented on others PR)
I think creating this class as a parent for everything else will solve the parser error.
7 (commented on others PR)
commands should be appended with a space character.
8 (commented on others PR)
Why is there a need for this return statement?
9 (commented on others PR)
Nice formatting, LGTM!
10 (commented on others PR)
You can use Java's smart for loop for this
11 (commented on others PR)
Is there better naming for without choice?
12 (commented on others PR)
Good use of bubble sort optimization.
13 (commented on others PR)
This will still allow empty or numerical currency abbreviation.
Can use regex to make sure it only contains uppercase alphabets.
14 (commented on others PR)
this works as well though. Nice!
15 (commented on others PR)
can be simplified using:
input.equals(input.toUpperCase())
16 (commented on own PR)
Unlike read command, this line is used without printing any symbols before the user input.
17 (commented on own PR)
Umm.. did I remove the lines by accident?
18 (commented on own PR)
shawn I think there are some of your changes I accidentally deleted. It's the automerge..
19 (commented on own PR)
okk
20 (commented on own PR)
No, this was changed in this commit. But we could think of this feature again. Link to commit.
21 (commented on own PR)
Thank you @felixhalim
22 (commented on own PR)
I tried to delete a directory, and output no errors if it does not exist.
23 (commented on own PR)
Simplified the if-else statement.
24 (commented on own PR)
Simple O(n) linear search, should not affect performance.
25 (other comment)
Duplicate issue
26 (other comment)
Hello Sameer,
I opened a new issue for the mismatched project requirements. Our team will update it ASAP. Please check #19
Regards,
Ivander
27 (other comment)
Todo: Fix runtest.bat (@felixhalim )
28 (other comment)
Thank you felix!
29 (other comment)
LGTM! Nice.
30 (other comment)
Fixed in #18
31 (other comment)
This MaxDay is integrated with the storage component. It will load the max day in the master file. Fixed this issue.
32 (other comment)
Thank you felix for referencing the issue.
33 (other comment)
Fix #79
@EthanWong2212 (14 comments)1 (commented on others PR)
private static final String[] AA1 = {
"PGP",
"Kent Ridge MRT Station",
"Opp University Health Center",
"Yusof Ishak House",
"Central Library",
"Kent Ridge",
"Museum",
"University Town",
"University Health Centre",
"Opp Kent RIdge MRT station",
"PGPR"
};
private static final String[] AA2 = {
"PGP",
"Kent Ridge MRT Station",
"Opp University Health Centre",
"University Town",
"Raffles Hall",
"Kent Vale",
"EA",
"NUS IT",
"University Health Centre",
"Opp Kent Ridge MRT Station",
"PGPR"
};
2 (commented on others PR)
assert !locations[0].isempty() : "Location 0 is empty.";
assert !locations[1].isempty(): "Location 1 is empty.";
3 (commented on others PR)
Looks good. Can consider using .isblank()
4 (commented on others PR)
There are 7 commands you can use to get bus information from Nav@NUS
>Notes about command format:
5 (commented on others PR)
Would be good to start each section with a brief intro
6 (commented on others PR)
This following steps is a guide to start running Nav@NuUS.
1. Ensure that you have Java `11` or above installed in your computer.
7 (commented on others PR)
Would be good to start each section with a brief intro
8 (commented on others PR)
Perhaps we should add getters for faculty and info here too. Otherwise we can go ahead and merge
9 (commented on others PR)
Sure, we can add it when implementing the other features
10 (commented on others PR)
what is this for?
11 (commented on others PR)
Why use setUserInput instead of making new Parser object?
12 (commented on others PR)
I think it'd be good to refactor the lol to final dummy parameter for the sake of readability.
13 (commented on others PR)
parser = new Parser(DUMMY_PARAM);
14 (commented on others PR)
public static final String DUMMY_PARAM = "lol";
*/
15 (commented on own PR)
I've removed this file. Wasn't meant to commit it to branch
16 (other comment)
Good point!
I think we can leave such prompts out of the output of commands?
@riazaham (13 comments)1 (commented on others PR)
Hmm then should we implement this for projects and tasks also?
2 (commented on others PR)
It is task view iirc. isProjectListView refers to project view so means not in task view
3 (commented on others PR)
yup agreed
4 (commented on others PR)
Apparently, it can't catch NullPointerException. Think you could work around it?
5 (commented on others PR)
I think the '2' is the limit for integers so in that sense I believe Shreyas' concern is valid.
I have 2 suggestions:
We loop through the inputs and extract out key-map info for multiple params
We only include 1 param type for all our commands
6 (commented on others PR)
Ok got it thanks for the clarification
7 (commented on others PR)
I believe this is not recommended (importing with *). You can just revert back to the old implementation
8 (commented on others PR)
Do we need this....?
9 (commented on others PR)
Don't need this here if it is already caught in parse(). We try not to repeat codes but do let me know if there are other reasons for this implementation
10 (commented on others PR)
just need to include the teamMembers ArrayList in signature
11 (commented on others PR)
Might have merge conflicts since "assign" is also used for project view
12 (commented on others PR)
We have not abstracted the HomeView for other commands so maybe leave the HomeView in the Parser?
13 (commented on others PR)
do you wanna change it to if-else? Just a suggestion for better readability but this works too!
14 (commented on own PR)
Yup have added a remark to throw error
15 (commented on own PR)
I think it's just for good practice
16 (commented on own PR)
true, have removed in my next commit
17 (commented on own PR)
Oh thanks for the review, just committed the changes in Home Command PR!
18 (commented on own PR)
Solved!
19 (commented on own PR)
They haven't implemented it yet so I'm not sure how to link it but yes that's the intention
20 (commented on own PR)
actually in the parse function there will be nothing to catch.
If you realise the only thing the parse function does is extract the user input.
It does not process it, so no errors thrown
21 (commented on own PR)
I think as of now that feature is not in our user guide. Like showing the list of tasks attached to members.
So since no other command uses it for now I didn't implement it.
It's a breadth first approach
22 (commented on own PR)
I think as of now that feature is not in our user guide. Like showing the list of tasks attached to members.
So since no other command uses it for now I didn't implement it.
It's a breadth first approach
23 (commented on own PR)
I have no preference, I think both make when it comes to organisation
24 (commented on own PR)
I thought of it also but I realized it's more of an improvement since as of now there isn't a need for it.
We have no feature planned that will use the enums, (e.g sort by priority).
Also, the error handling is quite tedious to implement if we use enums.
I will implement it in the final run once we're done with a working 2.0.
25 (other comment)
I need help with jUnit test for this feature.
I'm unsure about how I should test invalid project ID and deadline format since the exceptions are thrown inside Parser class and not executeCommand().
What do you mean? For JUnit tests you don't need exceptions tho. You can hardcode the error messages.
Check my JUnit tests
@CookieHoodie (13 comments)1 (commented on others PR)
I think this printSubject function should be implemented in Ui class instead of here right?
2 (commented on others PR)
Should have created new exception classes for flashcards. NoSubjectException is supposed to be used by subject commands, but I noticed that the topic commands were also using the same exceptions, so I guess we can change it later
3 (commented on others PR)
List of flashcards is not used, can be removed
4 (commented on others PR)
This method is no longer needed. I will delete it in the subsequent pr.
5 (commented on others PR)
Inside the constructor of the classes that extends Exception, it should call super(message). In this case, it should call super(printNoFlashcardsError).
6 (commented on others PR)
Personally I don't think it's a good idea to make Ui to return string the exception message in this way if no cuztomization is to be done to the message. Constants would be better in this case.
7 (commented on others PR)
We could create a method in Ui such as printError(Throwable err) and pass the error to that method for it to print out. In that way we let Ui handle all the printing and improves cohesion.
8 (commented on others PR)
For headings such as 1. Introduction, there should be a fullstop after the number iirc. For subheadings such as 4.1 Subjects they are not needed.
9 (commented on others PR)
Should have a full stop after 2, same for other headings
10 (commented on others PR)
imo note instead of warning would be better here, since nothing bad will happen even if they add extra spaces in this case
11 (commented on others PR)
Same thing as above
12 (commented on others PR)
The end of the activation bar looks kinda incomplete for both diagrams. In the second image the parse() call to TopicParser seems incomplete as well.
13 (commented on others PR)
I think the rightmost part is cut off.
14 (other comment)
necessary instances such as storage can also be passed in if they are needed in certain execute methods.
15 (other comment)
Issue is solved. Closing this issue.
16 (other comment)
Issue is solved. Closing this issue.
17 (other comment)
partially fixes #29
18 (other comment)
Partially fixes #107
19 (other comment)
The results.json are not duplicates, but rather results under subject or topic. I will change the file name to differentiate between the two to avoid confusion, and update the documentation to make it clear.
@Lezn0 (13 comments)1 (commented on others PR)
4 spaces instead of 8
2 (commented on others PR)
private static ArrayList<Bus> buses = new ArrayList<>();
3 (commented on others PR)
Might be better to separate i to a counter and a boolean for better clarity.
4 (commented on others PR)
Good test cases
5 (commented on others PR)
Nice! The tests account for most situations.
6 (commented on others PR)
if (info.name.equalsIgnoreCase(input)) {
7 (commented on others PR)
usage of getName function is redundant.
8 (commented on others PR)
Good test cases for the program
9 (commented on others PR)
might be better to move this to UI
10 (commented on others PR)
public static Bus selectBus(String busCode) {
11 (commented on others PR)
Is it possible to use an assert here instead of try-catch since the catch block is not doing anything? I'm not very sure
12 (commented on others PR)
Why is toLowerCase removed?
13 (commented on others PR)
ahh ok
14 (commented on own PR)
package seedu.duke;
import java.util.EnumSet;
public enum BusStops {
PGP("PGP","prince george residence"),
KENTRIDGEMRTSTATION("Kent Ridge MRT Station","mrt"),
OPPUNIVERSITYHEALTHCENTRE("Opp University Health Centre","opposite UHC, where students can get MC"),
YUSOFISHAKHOUSE("Yusof Ishak House", "Location with student service center and restaurants"),
CENTRALLIBRARY("Central Library","also known as CLB"),
KENTRIDGE("Kent Ridge","idk"),
MUSEUM("Museum", "Opposite Faculty of Engineering"),
UNIVERSITYTOWN("University Town","place full of fun"),
UNIVERSITYHEALTHCENTRE("University Health Centre","UHC, where students can get MC"),
OPPKENTRIDGEMRTSTATION("OppKentRidgeMRTstation","MRT"),
RAFFLESHALL("Raffles Hall","Hall located nearby Faculty of Engineering"),
KENTVALE("Kent Vale","somewhere"),
EA("EA","located in Faculty of Engineering"),
NUSIT("NUS IT","Opposite Central library"),
PGPR("PGPR","prince george residence");
private final String description;
private final String name;
BusStops(String name,String description) {
this.description = description;
this.name = name;
}
public String getDescription() {
return description;
}
public String getName() {
return name;
}
public static void listStops() {
for (BusStops info : EnumSet.allOf(BusStops.class)) {
System.out.println(info.name + " : " + info.description);
}
}
}
15 (commented on own PR)
Yup, only for testing.
16 (commented on own PR)
sure why not
17 (commented on own PR)
because I need the previous input to save into fav, new parser cannot save the old input
18 (commented on own PR)
it is just a random initialiser because you need a string within the parser to initialise it
19 (commented on own PR)
20 (other comment)
Better skeleton bus data
21 (other comment)
we might have to implement our previous idea (isValid) @Lezn0 your thoughts?
sure.
@Nazryl (12 comments)1 (commented on others PR)
He haven't start on it. He created the classes as a template first I think.
2 (commented on others PR)
AddNoteCommand.getCommandUsageNote() change to AddEventCommand.getCommandUsage()?
+ AddNoteCommand.getCommandUsage() + InterfaceManager.LS + COLOR_CYAN_STRING
3 (commented on others PR)
private static final String COMMAND_USAGE = COMMAND_WORD + ": Adds a note to notebook. Parameters: "
4 (commented on others PR)
return COMMAND_USAGE;
5 (commented on others PR)
Redundant space?
6 (commented on others PR)
/**
* Based on user inputted tags, will store the respective values in an ArrayList
* E.g. if user input 2 tags, CS2113 and important, will have 2 ArrayList
* 1 for the values corresponding to CS2113 and the other for important tag
*/
7 (commented on others PR)
oops messed up the block comment.
8 (commented on others PR)
Another space
9 (commented on others PR)
Maybe can give a short comment on what's happening here.
10 (commented on others PR)
@param?
11 (commented on others PR)
@param here too
12 (commented on others PR)
Forget to remove? Or just ignore for next PR use.
13 (commented on own PR)
Already informed beforehand
14 (commented on own PR)
Already informed beforehand
15 (commented on own PR)
Dont need. I have catch possible errors before it adds.
16 (commented on own PR)
Removed throws comment
17 (commented on own PR)
Good idea. Shall implement it right away. Thank you for your suggestion.
18 (commented on own PR)
isnt final.
19 (commented on own PR)
@Chongjx Take note. Cuz it was giving me an empty space when there are no tags
20 (commented on own PR)
Junit needs input due to our plan to put get input content to AddNoteCommand class. I cannot simulate a scanner input hence I getContent first. If it is blank, user puts an input. If its not blank, it means it is from the junit class which already has the content already pre input into the note.
21 (commented on own PR)
will do it once ive merge this in. have yet to pull the new one. might have conflicts
22 (commented on own PR)
as of now no
23 (commented on own PR)
I made it loop till there is content in the input.
24 (commented on own PR)
deleteNote(index) does not return boolean, so I made it return true. Also, I cannot remove the exception, when it getNotes it will return an exception when the index is out of bounds.
25 (commented on own PR)
I didnt realise this. I followed the format from addressbook to make it tidy and easy on the eyes. Jx and I used whitespaces when implementing the classes in the first place. I think its a minor matter as long its readable.
26 (commented on own PR)
wouldnt it makes sense to break all of the note stuff in the formatter? and just pass the success parameter? since we are passing in the note too
27 (commented on own PR)
Im not the author for this function. Ill make the changes.
28 (commented on own PR)
it just means that the contents for that line is missing
29 (commented on own PR)
its not a line number. fixed it
30 (commented on own PR)
I know why already. the ide by default turns on whose whitespaces when refactoring
31 (other comment)
Please reject this pull request, thank you
32 (other comment)
It is now ready for review.
33 (other comment)
Need help with the Gradle checks. I suspect is something to do with EXPECTED.txt
34 (other comment)
Had to remove "help" from the ui-test. Wait till @brandonywl adds in his AddEvent and DeleteEvent then can add the "help" back into the input. Issue fixed!
35 (other comment)
Created PR first. Not ready to be reviewed. Will notify.
36 (other comment)
@prachi I've helped you added some codes for pinCommand but its commented out due to your junit test failing. The codes are for the formatting that @Chongjx has done.
37 (other comment)
Its fixed on my side. I havent commited.
38 (other comment)
Settled on adding PREFIX_ARCHIVE case
@EyoWeiChin (12 comments)1 (commented on others PR)
Thanks for refactoring out the methods!
2 (commented on others PR)
Perhaps this could be replaced with a switch statement if you feel it would be neater.
3 (commented on others PR)
This part could be changed to:
Iterator iterator = jsonList.iterator();
To remove the depreciated / unchecked warning
4 (commented on others PR)
Following the above comment, this line could be split into these 2 parts to:
//Advance the Iterator
jsonObject = (JSONObject) iterator.next();
jsonObject = (JSONObject) jsonObject.get("data");
5 (commented on others PR)
Following the above comment to remove the warning. This chunk of code can be replaced with:
for (Object genre : jsonGenre) {
animeGenre.add((String) genre);
}
6 (commented on others PR)
Thanks for making this part neater.
7 (commented on others PR)
Would this be better if it was refactored using the utility methods available in CommandParser?
8 (commented on others PR)
Is this subsection needed? I wanted to do one for mine as well, but it seems weird without another subsection or "proposed implementation" section
9 (commented on others PR)
Thanks for helping me fix the formatting for my images!
10 (commented on others PR)
Hmm okay got it! I'll make modifications to my portion in my next PR. Thank you.
11 (commented on others PR)
It seems that there is a mistake in the numbering here
12 (commented on others PR)
Thanks for implementing the badges!
13 (commented on own PR)
Ah, I left it there mistakenly. I have fixed it, thank you for pointing it out.
14 (commented on own PR)
I have extracted the searchType as a constant!
15 (commented on own PR)
I have extracted out the values as constants.
16 (commented on own PR)
I have added a newline here.
17 (commented on own PR)
I have added a newline here as well, Thank you!
18 (commented on own PR)
Got it! I have rectified the issue. Thank you
19 (commented on own PR)
I have made the changes, in all affected areas. Thank you for pointing it out.
20 (other comment)
Hi, thank you for this bug report. I have rectified the issue in the above PR.
21 (other comment)
Hi, thank you for this bug report! I have rectified the issue in the above PR.
22 (other comment)
Hi, thank you for spotting this error. I have rectified the issue in the PR mentioned above.
@gmit22 (11 comments)1 (commented on others PR)
SO do we insert the code for adding and editting to project member list here?
2 (commented on others PR)
Yes so something like project member which will be handling all this?
3 (commented on others PR)
Good job, as @chocomango said we need to break commands into subclasses I think.
4 (commented on others PR)
I think here the main implementation is for parser to be used for your testing?
5 (commented on others PR)
Yes that makes more sense for setting it. Thanks
6 (commented on others PR)
change this get to getTask, so it becomes backlog.getTask(id -1 )
7 (commented on others PR)
Similar to add, maybe implement a removeTask also in the backlog task class
8 (commented on others PR)
Think remove it then
9 (commented on others PR)
Is the storage now taking care of all the details and storing it if the program crashes.
10 (commented on others PR)
Like for example I create a project with a valid command
eg: project /create -title try -desc create a trial project -sd 5 -duration 30 and then due to some reason it stops working and crashes due to an error. The next time I run the program, and put the command project /view will it show the project created in the first place
11 (commented on others PR)
Okay, so every time something new is added to save, it will update the json file, am i correct?
12 (commented on own PR)
Yes i forgot to incorporate that change will do
13 (commented on own PR)
Agreed.
Okay so just public variable will be used here? Then won't we have to pass the project object in all the functions?
14 (commented on own PR)
Just to clarify:
So once project is created and thrown, the command returns the proj variable which is stored in the parser to edit?
15 (other comment)
>img width="243" alt="Capture" src="https://user-images.githubusercontent.com/59180102/97679876-db934380-1abb-11eb-99bd-bc375d47b1c1.PNG">
16 (other comment)
Good to merge.
17 (other comment)
I think you'll have to pass the project since all of it will be added to the backlog attribute of it. I have implememnted the add and delete, can check from there also if needed.
18 (other comment)
Code has been changes, the parameters and all so I think you need to adjust to that. So i think need to factor that in
19 (other comment)
Suggested some changes, rest looks good to merge
20 (other comment)
Please assign appropriate labels, and everything.
21 (other comment)
Any reason for moving project in a different package?
22 (other comment)
Like add all classes which need to be stored in one package?
23 (other comment)
The structure is making it a bit confusing imo, maybe change that?
24 (other comment)
Good to merge
25 (other comment)
I meant like add all the files whose data has to be stored in the same main package. Also, can you see Duke class and remove your parser?
26 (other comment)
Done by #34
27 (other comment)
Sounds good
28 (other comment)
Resolve the conflicts, youd have to do it using cli in your own repo @e0426051
29 (other comment)
Some checks do not seem to pass
30 (other comment)
I created a flag to print this if the user input is valid, and the required message The details of the tasks are as follows: is printed for the first task.
31 (other comment)
Creating an additional check of :
``if (sd==0)
{ throw new DukeException("Sprint Duration cannot be zero")}
``
32 (other comment)
Made changes so that:
command>task /view 0
The following task ID doesn't exist in backlog.
Please enter a valid ID.
command>task /view 100
The following task ID doesn't exist in backlog.
Please enter a valid ID.
This was done by using an additional conditional check :
if (backlogId <= proj.getProjectBacklog().getNextId() && backlogId > 0)
@samuelchristopher (10 comments)1 (commented on others PR)
inputs[1]
2 (commented on others PR)
this naming brings clarity! good job sam
3 (commented on others PR)
why printing and returning a string? doesnt the return string from executeCommand in every command get printed?
4 (commented on others PR)
nice :^)
5 (commented on others PR)
nice job on including the id here shreyas
6 (commented on others PR)
is there a reason why we need this?
7 (commented on others PR)
nice job in initialising!
8 (commented on others PR)
we will need to change this to "n" soon!
9 (commented on others PR)
nice job on this sean! thanks so much
10 (commented on others PR)
oh sean, this was added for the Project View. but its ok! i can modify project view to take care of this case when the priority is not set
in summary; no changes required for this on your end
11 (commented on own PR)
dont need cause the variable is already initialised on this line
12 (commented on own PR)
thanks for pointing that out sam ! fixed here 7cd85a2268c4e2eeb93a769ebcb82c17dd9f30f9
13 (commented on own PR)
ok! thanks man
14 (commented on own PR)
thanks sean!
15 (commented on own PR)
can extract this portion into its own function
16 (commented on own PR)
refine this comment
17 (commented on own PR)
refine this comment
18 (commented on own PR)
@riazaham the else block would be blank though right?
19 (other comment)
progress as of 19 october 2020, 7:30 pm
moving on to extend task functionality first
20 (other comment)
Hi Sean @thatseant , let me answer the points:
- There's no way to display project view other than selecting project.
Is there a need to display project view other than selecting the project?
- Multiple members are not shown.
Currently, each task can be assigned on member.
- Tasks are not numbered so it is hard for user to see index of tasks.
Oh okay! I have built this from the mock-up that we approved and I did not include the index at that point. Maybe for the next iteration we can add an index column? For now, users can use the list command?
@Lusi711 (10 comments)1 (commented on others PR)
There is commandParams in CliCommand class. Could it be better to just utilise them?
2 (commented on others PR)
Overall well done! I like the detail you put in to splitting all the methods.
3 (commented on others PR)
Is it better to phrase this as "Switches from notebook mode (at the bookshelf level) to the timetable mode or vice versa:. Since there are no other modes currently.
4 (commented on others PR)
Missing expected output
5 (commented on others PR)
The application will not return an error for having spaces. I'm not sure whether that was intended or missed restriction.
6 (commented on others PR)
Should be tag 1 /tschoolWork
7 (commented on others PR)
Should be "tag /tschoolWork"
8 (commented on others PR)
Extra new line here
9 (commented on others PR)
>br> probably redundant
10 (commented on others PR)
Should be diagrams/class/jpeg/Storage_UML_class.jpg
11 (other comment)
Section 4.3.2 done
@lingsihui (10 comments)1 (commented on others PR)
Good Job.
2 (commented on others PR)
👍🏻
3 (commented on others PR)
You should rename your test function name in the following format!
methodUnderTest_inputGiven_ExpectedOutput
4 (commented on others PR)
Your error: java.lang.AssertionError: size should not be greater than card index at this step
I think you meant assert flashcardDeck.size() >= cardIndex
5 (commented on others PR)
good job !
6 (commented on others PR)
You can look at my RemoveLinkCommand class evaluateLinkNumber to add the exceptions!
7 (commented on others PR)
Nice !
8 (commented on others PR)
nice dg
9 (commented on others PR)
can change to ##Academic Component!
10 (commented on others PR)
nice
11 (other comment)
looks good. Maybe you can rename check grade to check cap instead of check grade and list grade.
12 (other comment)
Maybe you can add a Flashcard Ui class to print out all your Ui.
13 (other comment)
Maybe you can add a constant for all your magic number to improve code quality.
14 (other comment)
Thanks for the reminder!
15 (other comment)
Okay Thank you!
16 (other comment)
Fixes #20
17 (other comment)
Fixes #62
18 (other comment)
Ganbatte
19 (other comment)
Hi please correct checkstyle error !
20 (other comment)
Fixes #115
21 (other comment)
#91
@Artemis-Hunt (9 comments)1 (commented on others PR)
Can consider switching to using TablePrinter to print help in standardized table format - look at code below for example. Columns in the table are separated by semicolons
Code:
Output:
2 (commented on others PR)
Can consider changing to standardized input format, to remain consistent with the manual/auto tracker and finance tools input format.
Let's say we have CommandPacket packet = InputParser().parseInput(input)
The commandPacket will be as such:
Params can be accessed via packet.getParam("note"), for instance. This will return "skip page 70" as a String
3 (commented on others PR)
Can consider refactoring code into separate function(s), to avoid "arrowhead" code (deeply nested if-else and loops)
4 (commented on others PR)
See comment on lines +87 to +92 first before reading this comment: If goals in totalGoalList is changed to a hashMap then the goal for that month can be accessed with this.goals.get(month) in TotalGoalList.java instead of haping to use a for loop to search through all entries.
5 (commented on others PR)
Try not to have unhandled exceptions unless necessary. Do add comments to explain the scenario(s) in which the exception would be triggered
6 (commented on others PR)
Can consider changing the totalGoalList to a hashMap with key {month} and value {goal}, since we only allow them to set 1 goal for the month.
E.g.
totalGoalList
JAN: 1500
FEB: 2000
MAR: 4500
7 (commented on others PR)
Consider renaming this variable - goalSetter gives the impression that it is a class that handles setting the goal, when it is simply the goal to be set. Maybe something like goalToSet would be clearer
8 (commented on others PR)
Consider storing total monthly expenditure/income in a hashMap.
E.g.
expenditureList
JAN 1500
FEB 254
MAR 0
Increment/decrement the total amount whenever there is a change made. For instance, when a new expense of $25 is added to the ledger for June 15 2020, increment the total expenditure for June by $25. When this same expense is edited to become $45, increment June expenditure by $20. When this expense is deleted, decrement June expenditure by $45.
This way, there is no need to loop through all entries every time there is a new entry or every time you want to view the goal.
9 (commented on others PR)
Avoid calling main() over and over again - this creates a new loop. So if the user does 10 operations, this will cause 10 nested main loops to be created. Should return to the top level main loop directly (i.e. use return;) and allow the main loop to continue
10 (other comment)
Good job
@ShawnTanzc (9 comments)1 (commented on others PR)
Could consider replacing -1 with a defined phrase so it is more reader friendly
2 (commented on others PR)
@felixhalim say that we should include the space so that when user type "buys" or "buyer" it won't be detected
3 (commented on others PR)
Not recommended to use * it doesn't fit the gradle checkstyles
4 (commented on others PR)
Additional Spacing
5 (commented on others PR)
Same reason as mentioned
6 (commented on others PR)
do we need to remove spaces for this too?
7 (commented on others PR)
I did this so it gives users the flexibility or options to type in "2" or "Day 2". so I dun think we should replace it?
8 (commented on others PR)
General notes:
'convert /to'
'edit functions' (ForEx Rate, ForEx Abbreviation)
9 (commented on others PR)
include foreign currency abbreviation
10 (commented on own PR)
NullExceptionError is not fixed
11 (other comment)
will add new PR
@LiewWS (8 comments)1 (commented on others PR)
Should we remove this branch since the loop will break at line 27 and update would not be called? Can probably replace it with an assert !isTerminate(command).
2 (commented on others PR)
Should we copy into the new ArrayDeque before shuffling? Do we want to keep the original order of the Deck?
3 (commented on others PR)
Idea for UG FAQ: What if my flashcard answer contains a single word "done" or "exit"?
Possible answer: Escape the command using \exit or "exit".
4 (commented on others PR)
Sorry the earlier comment wasn't very clear. What I meant was that since we have
ArrayList<FlashCard> getDeck() {
return deck;
}
then would passing the reference to the ArrayList to shuffle cause the original deck to be randomized also?
If we want to maintain the order in the original deck then perhaps a suggestion could be changing getDeck() in Deck class to
ArrayList<FlashCard> getDeck() {
return new ArrayList<>(deck);
}
so that other methods cannot modify the ArrayList
5 (commented on others PR)
Is there something missing in this diagram?
6 (commented on others PR)
At section 4.1:
Would the diagram be more complete if there is a lifeline for the caller of ModTracker?
7 (commented on others PR)
At section 4.5:
Should there be a ':' in front of the class name?
8 (commented on others PR)
At section 4.7:
Should :TaskList return control to :Parser instead of User since it was called by :Parser? Also I thought the Parser is called by :Ui instead of directly by User?
9 (other comment)
Delete command for Normal Mode implemented by @alwaysnacy in #26.
10 (other comment)
Actually do we need JUnit tests for Help Commands?
11 (other comment)
Should we add throws Exception to the signature of executeCommand() in Main also?
12 (other comment)
I will create a new PR after fixing the issues.
13 (other comment)
Moving the logic to FlashCard class instead since that is where the response strings are generated.
14 (other comment)
Discovered bug in formatting when the flashcard id has more than 1 digit. Re-opening issue as a reminder to fix it.
15 (other comment)
Updated model component as well.
16 (other comment)
Looks good to merge. @kaijiel24 what do you think?
17 (other comment)
LGTM
18 (other comment)
That is a valid point, perhaps a target CAP of 5 is not the best example here.
However, the problem is reproducible with the following input:
Suppose I set a target CAP of 4.499999992, the following output is produced:
This is different from what is expected because getting a 'B+' for 4MC and 'A-' for the remaining MCs would allow the target CAP of 4.499999992 to be achieved.
On a side note, I expected the program to round any CAP close enough to 5 to 5.0 from the following behavior:
@yAOwzers (8 comments)1 (commented on others PR)
Would it be better if we used:
this.taskList.remove(index - 1);
We can also store this inside the taskList class as a method! What are you thoughts?
2 (commented on others PR)
Just to note, we can replace this magic number!
3 (commented on others PR)
We should try to remove these -1 as it's a little confusing without any context
4 (commented on others PR)
Oh like what's the significance of -1? Or its supposed to perform like if (notebookIndex > 0) ?
5 (commented on others PR)
LOL
6 (commented on others PR)
Will update on my side once we have merged this first UG
7 (commented on others PR)
YES thank you sorry was loading the JAR yesterday but I passed...
8 (commented on others PR)
So it no longer removes pages based off titles as an input?
9 (commented on own PR)
Oh okay thanks! Will make edits! I think something went wrong during the merge conflict, was working fine on my end just now
10 (commented on own PR)
OMG LOL SORRY
11 (commented on own PR)
Oh even if the date formatted is wrong? I thought it needs to be in the format dd-MM-yyyy or can it be the other way around?
12 (commented on own PR)
Ohh okok will change it to just staying the notebook mode then
13 (commented on own PR)
I can include that in for the test case
14 (commented on own PR)
alrightoesss
15 (commented on own PR)
Oh shoot okay, LEMME edit
16 (other comment)
Overlap with Long
17 (other comment)
Able to save the name of the user in the nameOfUser.txt file, however during the first iteration does not save the name immediately. Still currently working on it
18 (other comment)
Do y'all think it's necessary to include all the isPersonalised() and isTriggerAutoSave() methods?
19 (other comment)
Formatted the numbers
20 (other comment)
The IO test will fail now since there's a welcome message right? Or is there something wrong with my code HMM
21 (other comment)
OOOOOOOORight it was merge conflicts... lol
22 (other comment)
Ready for review
23 (other comment)
To edit the appendix F for corrupted/missing data files @yAOwzers
24 (other comment)
To edit UG: Delete the nameOfUser.txt file upon downloading, to include change of names instructions @yAOwzers
25 (other comment)
@chuckiex3 okay so we just need to reformat the help message right?
@farice9 (8 comments)1 (commented on others PR)
Should probably git ignore this? Or intended ya
2 (commented on others PR)
I think it'll be clearer if you put
assert cardIndex <= flashcardDeck.size() : "card index inserted should be less than size of deck at this step"
assert is used to check if the value of something is what it should actually be, in this case, you want to assert that card index is actually less than or equal to deck size.
Consider adding another check for cardIndex to be greater than 0 btw! Otherwise negative values might break the application.
3 (commented on others PR)
Just adding on, the more general alternative would be testAddCard() !
Remember to apply the renaming to delete card and write to file as well.
4 (commented on others PR)
I think need to Figure 2 instead of figure 2
5 (commented on others PR)
Same thing here
6 (commented on others PR)
Are we keeping this line?
7 (commented on others PR)
Everything else looks goood
8 (commented on others PR)
I'll merge and help edit this since I'm working on it, thanks for pointing!
9 (other comment)
User should be able to enter and exit a feature of the application
If possible, the user can jump from one feature to another without going back to the main menu
10 (other comment)
LGTM, gonna merge and refactor any parts if necessary. Noice mate.
11 (other comment)
I agree with the check cap thing Sihui mentioned, but let's leave it to v2.0
12 (other comment)
LGTM, it won't affect other parts of the code atm since it only implements list grade function. Will merge this PR!
13 (other comment)
Will link the specific PR to this issue when working on it. Thanks for creating the issue!
14 (other comment)
Nice work Florence! Functions look good.
I resolved merge conflict between this branch and the latest TP master (after merging Shiho part). Then found out there are checkstyle errors. For the interest of time, I'll merge this PR in and fix the checkstyle on my side locally.
15 (other comment)
LGTM, failed some checks due to very little checkstyle error, will fix in the upcoming PR. Merging it!
16 (other comment)
Nvm just merge first! Thankss
17 (other comment)
LGTM, thanks for the prompt addition. Merging it 😸
18 (other comment)
LGTM, merging it!
19 (other comment)
Need to implement for the bookmark and academic features. Flashcard and timetable local storages have been built by @slightlyharp and @hailqueenflo .
20 (other comment)
Thanks for adding the log!
21 (other comment)
Remember to close this issue if it's done!
22 (other comment)
end result
23 (other comment)
LGTM!
24 (other comment)
Sorry wrongly approved, wait for new push before merging
25 (other comment)
This issue has been solved by each individual working on their feature
bookmark storage -> @lingsihui
academic storage -> @luziyi9898
timetable storage -> @slightlyharp
flashcard storage -> @hailqueenflo
26 (other comment)
Closing this issue since it has been implemented
27 (other comment)
Planning to standardize UI tmr
28 (other comment)
Adding on. This is cause the file is only really created when there's data inserted. Otherwise if left blank, it won't "create" properly.
29 (other comment)
@hailqueenflo added it
30 (other comment)
@hailqueenflo added
31 (other comment)
Closing this issue as it's implemented as "highlight" function
32 (other comment)
Merging this despite failing check. The check failed due to a JUnit test from @slightlyharp .
33 (other comment)
Merging it despite failing test for the same reason as @luziyi9898 PR
34 (other comment)
@slightlyharp Can you check your JUnit test again? It's still failing. Gonna hold on to your commit until noon, alright?
35 (other comment)
Fixed! Sorry I missed it, thanks for pointing it out!
36 (other comment)
Checkstyle error!!!!
@dozenmatter (8 comments)1 (commented on others PR)
I was thinking if it would be better to place quoteToPrint inside your toString() method and implement printAllQuotes() inside TextUi class instead? Then all you need is to call quoteList.toString() inside your printAllQuotes() method to print all quotes.
What do you think? 😃
2 (commented on others PR)
Why do you create a DeleteCommand inside your todo package?
3 (commented on others PR)
Likewise for this and other commands. Ideally all of our commands should be defined under the "commands" package
4 (commented on others PR)
Not sure if this line of code will fail, but I think it will be better to use information.isEmpty() or information.equals("") ?
5 (commented on others PR)
no worries I think that is not too big an issue
6 (commented on others PR)
By right execute() should take in Storage as parameter and this line of code should be storage.save() instead due to the previous commit I pushed just now. Not sure why Git did not flag this as a merge conflict though.
Can you try to pull the latest one and see if the code updates?
7 (commented on others PR)
Just to confirm, will your bookmark work if you do not 0-index this?
8 (commented on others PR)
Oh I see how your code works now. As a suggestion, it will be better to 0-index the number here, so that you will not need to -1 from other places of your code such as your delete() and findByIndex().
I will assume that your code is working and approve it.
9 (commented on own PR)
i think this could be previously from Yilun's one. Just now the log file got merge conflict so I just anyhow remove some lines haha.
10 (commented on own PR)
Yup you're right this line can be removed 👍
@limgl1998 (8 comments)1 (commented on others PR)
I think this line should be in one of the methods instead of being declared outside
2 (commented on others PR)
Maybe it would be clearer for the instance of ModuleList to be called modList instead? It might get confused with module.
3 (commented on others PR)
Maybe can include a file creation here so the user need not manually create one
4 (commented on others PR)
I think the address can be refactored into a constant e.g. FILE_PATH
5 (commented on others PR)
Maybe can label as a comment what the various index of the array modInfo refers to
6 (commented on others PR)
A suggestion is that this string can be set as a constant in the UI class and then you can call the constant (UI.constant name) here. If the message is changed at the other class for whatever reason then this part will automatically change also so don't really need change manually every time.
7 (commented on others PR)
Not sure if really wanna use this as this is kind of buggy. Might need to update/ tweak cmd for it to show
8 (commented on others PR)
Hmm, then for now we just use it. If it was encountered as a bug during testing then we change? Cos now this method is not tested yet right?
9 (commented on own PR)
Sounds like a good idea!
10 (commented on own PR)
Okay sure will change it back
11 (commented on own PR)
yeah should ignore
12 (other comment)
Fixes #23
13 (other comment)
Looks good to merge!
@manuelmanuntag96 (7 comments)1 (commented on others PR)
The picture doesn't appear on the DG page
2 (commented on others PR)
The picture doesn't appear on the DG page
3 (commented on others PR)
The picture doesn't appear on the DG page
4 (commented on others PR)
The picture doesn't appear on the DG page
5 (commented on others PR)
The picture doesn't appear on the DG page
6 (commented on others PR)
The picture doesn't appear on the DG page
7 (commented on others PR)
The sequence diagram is a bit messy and complex
@QX-CHEN (7 comments)1 (commented on others PR)
No need these.
2 (commented on others PR)
-1 later because range check is done in the later part.
3 (commented on others PR)
-1 here.
4 (commented on others PR)
Perhaps variable name change to index?
5 (commented on others PR)
Fullstop before new line.
6 (commented on others PR)
Expand out, should be highlighted in code style.
7 (commented on others PR)
specifically line 37
@1-Karthigeyan-1 (7 comments)1 (commented on others PR)
Could be more specific in naming convention. For example, "getList" or "getActivityList"
2 (commented on others PR)
Might have to SLAP this later on, once the base parser class Is up
3 (commented on others PR)
You can use the methods in findDescriptionCommand class and assert using those methods.
4 (commented on others PR)
Same as the previous comment
5 (commented on others PR)
Nice slap!!!
6 (commented on others PR)
Assertions.assertThrows() might help for exception testing
An example is given here:
https://howtodoinjava.com/junit5/expected-exception-example/
7 (commented on others PR)
Spelling error for calorie
8 (other comment)
Looks good!
9 (other comment)
Looks good!
@OngDeZhi (7 comments)1 (commented on others PR)
The variable commandOption is not used, perhaps we can use a if statement for now since there be more options later for the watchlist command.
if (commandOption.equals("-n")) {
// create watchlist code
}
2 (commented on others PR)
Do you still need this? Otherwise, it would be better to remove the old code.
3 (commented on others PR)
Capitalize the first letter, same for line 314.
4 (commented on others PR)
Is it intending to log some workspace information here after it is saved? There's a ":" at the end for line 119.
5 (commented on others PR)
I think you could consider using a constant here.
6 (commented on others PR)
Looks good!
7 (commented on others PR)
Is there a reason for the chunk of space between the end of 4.4.1 and the header of 4.4.2?
8 (commented on own PR)
Noted on that, I will add an extra line.
9 (commented on own PR)
Noted on that, I have updated to use a constant for it.
10 (commented on own PR)
Alright, I will add some comments to explain the numbers.
11 (commented on own PR)
Okay thanks.
12 (commented on own PR)
Ok, I have removed some redundant words in it.
13 (commented on own PR)
That's true but because it affects the data folder in the src/test too, hence I made it specific. Perhaps, we could add it back after this PR as by then, the test files required for the JUnit would be uploaded already.
14 (commented on own PR)
Yep, I think we could standardize to 2 periods, ".."?
I think we could use it during the initialization process? Seems like the only place it would fit.
15 (commented on own PR)
You are welcome 😃
16 (commented on own PR)
I think so because we are gonna have another subsection called design consideration, I guess having just current implementation should be fine!
17 (other comment)
@ChanJianHao Yep, we can consider adding in future versions, it's probably not a good idea to add in new features now. Perhaps, we could indicate in our User Guide that we will add support for remembering the last accessed workspace in future implementations.
18 (other comment)
@AY2021S1-CS2113T-F12-2/developers I have assigned everyone to this issue since this is a shared problem as well. I'm thinking we could state in our UG what is considered as valid input ("1") and invalid input ("1 ").
@hailqueenflo (7 comments)1 (commented on others PR)
There should be a space after the # in order to display the heading properly (### 1.1 Viewing bookmarks in each category:)
2 (commented on others PR)
Remember to add an extra line after add LINK for it to show as the next paragraph
3 (commented on others PR)
Extra line needed here too
4 (commented on others PR)
Should it be rm 1?
5 (commented on others PR)
Should it be add LINK?
6 (commented on others PR)
There should be a space after # so that the heading is displayed properly on GitHub
i.e. ### 3.1
7 (commented on others PR)
Is this supposed to be a bullet point? If so, an extra space is needed after *
Perhaps you can also consider putting it in under Useful information: to improve readability
8 (other comment)
Close #125
@kerct (6 comments)1 (commented on others PR)
Why not just take in Module as an argument?
2 (commented on others PR)
Is "checkIfModuleExist" a better name?
3 (commented on others PR)
Should we change -1 into a variable called INVALID_WORKLOAD or INVALID_WEEK too?
4 (commented on others PR)
How about using COMMAND_EXIT.length() instead?
5 (commented on others PR)
Should we gitignore this file?
6 (commented on others PR)
Is it better to use the verb form "analyse" for the command instead?
7 (commented on own PR)
The file is already created when the Storage object is initialised, this part is just a check when trying to read from the Storage object.
8 (commented on own PR)
Okay!
@luziyi9898 (6 comments)1 (commented on others PR)
LGTM
2 (commented on others PR)
Noted on these changes.
3 (commented on others PR)
😂
4 (commented on others PR)
LGTM
5 (commented on others PR)
LGTM!
6 (commented on others PR)
Thanks for standardising.
7 (commented on own PR)
Alright thanks!
8 (other comment)
Fixes #7 .
Fixes #8 .
@domaxi (6 comments)1 (commented on others PR)
The printing of the cheatsheet names should return a String. All the Sytem.out.println should be handled by only the UI class.
2 (commented on others PR)
^same as first comment
3 (commented on others PR)
The test is well made, but I think you can move the test into the Test package instead of putting it inside the cheatsheet list class
4 (commented on others PR)
Nice Job! Very Neat and the OOP is damn legit
5 (commented on others PR)
Legit!
6 (commented on others PR)
Looks fine to me
7 (commented on own PR)
Did you just list it one by one?
8 (other comment)
I think it is a little bit counter-intuitive because the user do not have any specific instruction in the UG or in the help page on how to add new tasks. Your add command makes it more confusing for the user to add the tasks.
9 (other comment)
I added another attribute in the cheatsheet, isFavorite. Also added a method setFavorite() in the cheatsheet class
@shikai-zhou (6 comments)1 (commented on others PR)
I think you should not put this inside the constructor
2 (commented on others PR)
Should we use break instead of return?
3 (commented on others PR)
As long as it works I guess ...
4 (commented on others PR)
Since the variables are already declared, why not pass use them? Like ShowDuration instead of Integer.parseInt(2)
5 (commented on others PR)
What if we don't know showDuration?
6 (commented on others PR)
Does this function prints out the review?
7 (commented on own PR)
I just made it so that it prints out hours and minutes. Still cannot parse yet.
8 (commented on own PR)
Ok, on it
9 (other comment)
Great job
10 (other comment)
This is done for add
11 (other comment)
add >Module Code> >1> >Number of Lectures>
Do you think the above works?
12 (other comment)
Is this done?
13 (other comment)
Done
14 (other comment)
What was the input you used, so I can replicate the problem
15 (other comment)
ok tried again and it works
16 (other comment)
Should be fixed above
17 (other comment)
May I suggest the use of backspace?
18 (other comment)
Has already been fixed in #142. Someone double check?
@joelngyx (6 comments)1 (commented on others PR)
Good job!
2 (commented on others PR)
Good use of tests! And good formatting overall
3 (commented on others PR)
looks good
4 (commented on others PR)
Changed existing interfaces into classes under 2 broad interfaces, making the code tidier. Looks great!
5 (commented on others PR)
Looks great!
6 (commented on others PR)
Thanks for resolving the anchors here!
7 (other comment)
Implemented
@wgzesg (6 comments)1 (commented on others PR)
Try use commandLibrary as well?
2 (commented on others PR)
Since it's the same we can refactor the two to a shared package then use it for all parts?
3 (commented on others PR)
Printing response can put in Ui class. Response content can be a constant
4 (commented on others PR)
Can try use/adapt the getInput method from Khoa's Ui package. That may standardise it
5 (commented on others PR)
Can create a new instance of workoutSessionUi and make the method non static. That would be more oop and better design
6 (commented on others PR)
Can try convert to throw Schwagserexceptions which can be handled by SchwasadsfgerHandler. That will help format the output which aligns with Ui output format
7 (commented on own PR)
ohh tkss. Will fix that
8 (commented on own PR)
Icic. Will check on that
9 (other comment)
Good refactoring to avoid circular dependency
10 (other comment)
good effort!
11 (other comment)
Nice refactoring
12 (other comment)
Nice work! Will follow the format
@kaiwen98 (5 comments)1 (commented on others PR)
I think the reason why I was not able to exit your sub program is because your event loops here are slightly convoluted and possibly buggy. Please review!
2 (commented on others PR)
You can try reviewing LocalDateTime methods for better ways to parse months. Likewise, my DateTimeManager class and parseRawDateTime method in InputParser class may be helpful to you in this particular function.
3 (commented on others PR)
May want to refactor into another function
4 (commented on others PR)
So you used toString() to handle save text output. You can perhaps introduce another method to the classes, possibly with an interface, to print some kind of save statement separately. This make make your life easier when you parse.
5 (commented on others PR)
In case you cannot find a better way to deal with this, look at my previous comment
6 (other comment)
Noted. Will work on it.
7 (other comment)
Please take a screenshot, and report your input sequence.
8 (other comment)
Can you look into the following:
Your main loop do not have an exit condition. That's why you cant exit back to main menu
You are not using MenuPrinter in your feature. Hence MenuPrinter.prompt does not print error message for you.
May want to look into better presentation of error message
You may want to augment your command menu with what the user can input, I was not sure what to do
Please fix 1 and 2 then the PR will be merged. The rest LGTM.
9 (other comment)
Yo, please check out this issue: #47
Please review the changes and let me know if you feel something better can be done.
You will need to do some slight refactoring. Kindly do so then it will be good to merge.
@weisiong24 (5 comments)1 (commented on others PR)
The above top class design is too messy with arrow and it might confused the reader. A proper arrow head would improve readibility to the readers about your application.
The circle portion of the diagram I have marked may be hard for user to get a better picture of the flow of your design.
Perharps, use straight lines or adjust the different box accordingly so that user can follow through the flow of the design
2 (commented on others PR)
The above top class design is too messy with arrow and it might confused the reader. A proper arrow head would improve readibility to the readers about your application.
The circle portion of the diagram I have marked may be hard for user to get a better picture of the flow of your design.
Perharps, use straight lines or adjust the different box accordingly so that user can follow through the flow of the design
3 (commented on others PR)
The arrow coverges too much in the circled portion and thus it is making the class diagram more complicated than it should have been. Maybe try to simplify the diagram by breaking it into portions or structure the arrows in a way that it is straight and pointing the class table more clearly.
4 (commented on others PR)
Inconsistent arrow used (dotted and solid arrow) and the arrow head in the circled area is over the box which should have only been hit the box only.
Lack of system architecture diagram to show the overall design of the program. (only uml and sequence diagram is available).
For this diagram, it is hard to interpret if it is a uml class diagram as the boxes used are wrong and format of the diagram is not consistent with the format of a standard uml class diagram.
5 (commented on others PR)
The circle highlighted portion for the sequence design is very small and hard to see the different components/operations. It would improve the visusal better if more spaces are given to the main ravi box for the sequence diagram.
6 (commented on own PR)
Hi, I have made the changes mentioned above and updated it. Kindly check if you can merge it. thank you!
7 (other comment)
To create different user acoounts :User Class- > name,password,7 Arraylist timetable (one for each day)
Inside every timetable arraylist put event class->name,location, timeStart,timeEnd
For each features:
Login feature-> create obj from user class
Add feature->similar to add event command in IP
edit ->members of event class
display->sort timetable then similar to List command in Ip
delete->similar to delete command in Ip
clear-> delete for all events in timetable arraylist
compare->linear search thru timetable arraylist
command->program to prompt user for input individually (one at a time)
8 (other comment)
Mentioned in Enhance the add verifications of Input #65
@jazhten (5 comments)1 (commented on others PR)
No, I think break might cause the program to terminate as if a "bye" has been passed in. Not sure if it will break the outerloop in the main Duke class.
2 (commented on others PR)
is it possible to throw more than 1 exception? Does it even catch the IndexOutofBounds?
3 (commented on others PR)
well done with this part
4 (commented on others PR)
Can I just check if our code can parse hours on top of minutes?
5 (commented on others PR)
Ah okay, will raise an issue.
6 (commented on own PR)
No it's not inside the constructor, I'll move it to the bottom so it's clearer haha
7 (commented on own PR)
Just assume they know or set default.
8 (commented on own PR)
Good catch, whoever is in charge of the add command just adjust accordingly.
9 (other comment)
Additionally, fixed some bugs related to adding show (would've caused null pointer exception)
Added test methods as example for how to write tests and specifically how to reference the ShowList
10 (other comment)
Also abstracted String related commands to StringOperations class
11 (other comment)
Nevermind fixed it...
12 (other comment)
Sorry don't merge yet, there's some bug with one of the commands
13 (other comment)
Just to explain the new changes for edit commands :
getRawEpisodesForSeasons() used instead of getEpisodesForSeasons() -> this one checks array using season-1 so it'll lead to bounds errors
If numSeason increases:
- set a new array for episodes and init the new seasons with 1 episode
if numSeasons decreases:
- replace episodes with smaller sized array and delete the episodes in the later seasons
- initially episodes=[10,12] for 2 seasons, when resized to 1, episodes=[10]
14 (other comment)
Fixed issue.
15 (other comment)
Might want to try using Ui.print.... instead of just printing using System.out.println() in the individual functions.
16 (other comment)
Nice, may want to remove the empty test functions before the final release.
17 (other comment)
Good use of the Ui class!
18 (other comment)
For the date part, just raise the issue and I'll work on it later. thanks
19 (other comment)
Thanks for cleaning up.
20 (other comment)
Good cleanup.
21 (other comment)
Yea, I think we should include it in the UG so it'll be easier to use for the pitch/demo. Don't think it's necessary for the DG, maybe a quick note in the abstract or intro about the student part would be sufficient.
22 (other comment)
Good work with the review commands! Thanks Bryan.
@theopin (5 comments)1 (commented on others PR)
Might want to append a "Programing Language: " cos the parser currently looks out for it bfore parsing the language
2 (commented on others PR)
not sure what is this for
3 (commented on others PR)
Might want to append a "Contents: " cos the parser currently looks out for it bfore parsing the language
4 (commented on others PR)
Perhaps a a better word than pattern for the variable name?
5 (commented on others PR)
Might wanna apply slap more here since iza little arrowheaded
6 (commented on own PR)
Noted! Thanks for highlighting
7 (commented on own PR)
Initially did that to cover up visual bug. Resolved!
8 (commented on own PR)
Noted! Will rectify them.
9 (commented on own PR)
Alright! Thanks for the suggestion.
10 (commented on own PR)
Got notified by intelliJ to use it XD
11 (commented on own PR)
Noted!
12 (commented on own PR)
Okay
13 (commented on own PR)
XD
@mrwsy1 (5 comments)1 (commented on others PR)
Line47 "AA1" should be "AA2"
busesInZoneA.add(new Bus("AA2", AA2));
2 (commented on others PR)
KENTVALE("Kent Vale","Accommodation for visiting faculty guests"),
3 (commented on others PR)
UNIVERSITYTOWN("University Town","Place full of fun"),
4 (commented on others PR)
the *
5 (commented on others PR)
didnt we add these last time
6 (commented on own PR)
Yes, currently it will show
7 (commented on own PR)
might be a little weird because both AA1 and AA2 would show "PGP-> ...-> PGP" right now if that's the case, but I will take note of that for future updates
8 (commented on own PR)
i'll try that
9 (commented on own PR)
ok
10 (commented on own PR)
Can, but I was following the structure from ethan's skeleton code, the methods are all in FavList
11 (commented on own PR)
ok
12 (other comment)
This command is meant to be like a search filter (the way you would search for documents in your folder), so that users do not have to look around for correct faculty names. But this may get a bit confusing for a few users. @mrwsy1 what is your take on this?
Yea maybe I'll update the UG portion to say u don't have to key in the full name of the faculty
13 (other comment)
OK will add feature to show list of faculties
14 (other comment)
Will fix. Thanks
15 (other comment)
Will take this into consideration. Thanks
16 (other comment)
Noted, thanks
17 (other comment)
Café, will take note.
@durianpancakes (5 comments)1 (commented on others PR)
public String printPostQuizQuestion(int l, String correctnessLogo) {
2 (commented on others PR)
return question + correctnessLogo + "\n\n"
3 (commented on others PR)
return question + correctnessLogo + "\n\n"
4 (commented on others PR)
Add one line here:
String correctnessLogo;
5 (commented on others PR)
System.out.println(quizzes.get(quizIndexes.get(l)).printPostQuizQuestion(userAnswerManager.
getUserAnswers().get(l), correctnessLogo));
6 (other comment)
Resolves #129
7 (other comment)
Resolves #189
8 (other comment)
Prints time instead of date
9 (other comment)
Feature has been improved to be able to print events of next week in issue #280, resolved by pull request #281
@shreytheshreyas (5 comments)1 (commented on others PR)
Sam I think you got to make this private and make use of getters and setters, bcus i dont think it's good practice to make class members private.
2 (commented on others PR)
Sean why ah ? We making all the attributes in the other classes private anyway right
3 (commented on others PR)
Sean just one question over here ah, we will only able to accept one param over here issit? something like "select t/2". But will this block of code be able to accept a command like "deadline t/2 d/2020-10-18" where there are two params ?
4 (commented on others PR)
Dude over here we passing a string for the priority ryt, You want to change it to an enumeration??
5 (commented on others PR)
Riaz, just one doubt over here, for the priority are we using numbers, or are we gonna explicitly mention "High","Medium", Low", because in the user guide we inputted numbers for the priority.
6 (commented on own PR)
yeah i'll do that once we finalize the project name, just kept it as duke exceptions because that's the intial name we used to create the class
7 (commented on own PR)
Yes even i thought it would confusing because of the way the code is structured, but there's a reason i kept it like this, will explain it to you guys over a zoom session
8 (commented on own PR)
ok sure but in which is the case that a null pointer exception will be thrown, prof said there is no reason we should catch it in this sectoin ryt right ?
9 (other comment)
Guys tried to make the code over here look more modular using SLAP as sean suggested and implemented the commands to adhere to the user guide. lmk what u guys think
10 (other comment)
yeah dude, as for now we are using strings for the priorities ryt and I'm assuming the priorities we'll be assigning to the respective tasks will be numbers since that was how it was mentioned in the user guide. So as for now I'm just sorting the tasks by comparing their priority strings and it will arrange every task in ascending order.
@mxksowie (4 comments)1 (commented on others PR)
Only fats is plural here.
Consider making all related names plural (might be more suggestive of type) or all singular.
2 (commented on others PR)
I disagree with changing this to a static method. Instantiate the FoodList object instead (or get a pointer to the object via argument parameters) to call this method.
3 (commented on others PR)
Consider writing tests for the newly added DateTime functions.
4 (commented on others PR)
Recommend splitting the class/avoiding a do-it-all class if you find this applicable.
5 (other comment)
The build tests are failing because of the dependency of the code on the Food class. Have you tested the code locally?
Possible workabouts:
Consider moving changes to a branch that targets snowbanana12345's Food class.
Otherwise, consider implementing a minimal Food class which we could also remove when merge conflicts arise later.
6 (other comment)
Changes to testing will be made in a new branch since this branch already has its core functionality. (removed fix #26)
Plan to further streamline these features by adding more FP support and reducing repetition.
7 (other comment)
I currently disagree with the proposed change in the above comment. I think that the Loader class itself should not be dependent on these other classes (Person, FoodList/Food, etc). This is to streamline dependencies. Current implementation of generic Loader looks good to me. I propose the use of class specific wrappers or child classes of Loader in future updates.
LGTM.
8 (other comment)
Resolved in PR #53 onwards
9 (other comment)
Partial fix deployed in PR #103
This fix introduced references to the FoodList object in methods that required an object instance of FoodList by accepting it as a method parameter. This might not be the intended/desirable way to setup calculator.
Calculator should be revised to either have a seperate class that interacts with FoodList, or have more ways of getting a pointer to an instance of FoodList.
@MuhammadHoze (4 comments)1 (commented on others PR)
Just a small adjustment, maybe can just change the start date to 28 instead and end on 25 as shown in your sample output.
2 (commented on others PR)
Rest all LGTM
3 (commented on others PR)
Ahh alright i see
4 (commented on others PR)
This part, could you change it to String isReturnString = (isReturn) ? "1" : "0";
5 (commented on own PR)
oops. alright thanks
6 (commented on own PR)
Alright, will make the adjustment for all
7 (commented on own PR)
what's that?
8 (commented on own PR)
removed
9 (commented on own PR)
removed
10 (other comment)
I see, thanks for the edit!
11 (other comment)
Fixes #35
12 (other comment)
Looks good!
13 (other comment)
LGTM
14 (other comment)
Done!
15 (other comment)
for the failures in checks, go to yr project on IntelliJ and on the right side, you'll see a gradle tab, open it and then under the verification folder, run test and run check. it will show u the cases that has failed and then just edit them and re run the checks
16 (other comment)
LGTM! i'll merge this for ya
17 (other comment)
LGTM!
18 (other comment)
Will take a look at this and refactor my deleteCommand as well.
19 (other comment)
Sorry guys, accidentally created. suppose to merge into own repo.
20 (other comment)
LGTM!
21 (other comment)
yeah true, there will be a few more coming in soon. yeap sure 2.1
22 (other comment)
Thanks for pointing out! We will take note of this and make the necessary changes.
23 (other comment)
But there are actually modules with 0MC. eg. WR1401
24 (other comment)
Thanks for pointing out! We will take note of this and make the necessary changes.
25 (other comment)
Thanks for pointing out! We will take note of this and make the necessary changes.
26 (other comment)
Thanks for pointing out! We will take note of this and make the necessary changes.
27 (other comment)
Will most probably indicate in the UG that the due date will be 1 month from the loan date. As normally when u borrow a book , u can't really edit to your own preferred date. Most to most, an extension can be done.
28 (other comment)
Thanks for pointing out! We will take note of this and make the necessary changes.
29 (other comment)
Thanks for pointing out! We will take note of this and make the necessary changes.
30 (other comment)
Thanks for pointing out! We will take note of this and make the necessary changes.
31 (other comment)
Thanks for pointing out! We will take note of this and make the necessary changes.
32 (other comment)
Thanks for pointing out! We will take note of this and make the necessary changes.
33 (other comment)
Thanks for pointing out! We will take note of this and make the necessary changes.
34 (other comment)
Thanks for pointing out! We will take note of this and make the necessary changes.
35 (other comment)
Hi, this is still a work in progress, will most likely be ready in v2.1
36 (other comment)
Hi, actually if you do not input a priority, the default value of any task will be set as p:0. We will include this in the User guide so it will be clearer for users.
37 (other comment)
Thanks for pointing out! We will take note of this and make the necessary changes.
@gua-guargia (4 comments)1 (commented on others PR)
Perhaps can extract this part as an exception so that someone reading the code wouldn't get distracted by alternative paths taken when error conditions happen.
2 (commented on others PR)
Probably need to add another line of code to remove the module stored in the moduleList in the access class as well, the allModules variable seems like an instance of the moduleList stored in the access.
3 (commented on others PR)
Probably need to add another line of code to remove the chapter stored in the chapterList in the access class as well, the allChapter variable seems like an instance of the chapterList stored in the access.
4 (commented on others PR)
Perhaps can extract this part as an exception so that someone reading the code wouldn't get distracted by alternative paths taken when error conditions happen.
5 (commented on own PR)
Thank you, I have changed all the separated code into setIsModuleLevel().
6 (commented on own PR)
Thank you, I have changed the constant to all Uppercase and changed the case to relevant constant
7 (commented on own PR)
I have modified the method to return boolean instead of String because the execute method will need to print several messages for standard situation, therefore, I use boolean for convenience.
8 (commented on own PR)
Sorry, it is a bit hard to achieve for this method, because this print statement is part of the while loop, return the message or throw exception will terminate the loop. Do you have any suggestions?
@Johnson-Yee (4 comments)1 (commented on others PR)
String array declared but not used.
Could be implemented below replacing in line 46: Instead of "AA1", could add Zone_A[0] and Zone_A[1] to show a sequential approach in preparation for larger number of bus routes. Keep in view for future commits.
2 (commented on others PR)
Could refactor into a method adding all bus routes to the arraylist of bus object. For loop to run through and add the bus routes into the array list. This is to prepare for larger number of bus routes as we include other zones in our future versions. Keep in view for future commits.
busesInZoneA.add(new Bus(ZONE_A[0], AA1));
busesInZoneA.add(new Bus(ZONE_A[1], AA2));
3 (commented on others PR)
busesInZoneA.add(new Bus(ZONE_A[0], AA1));
busesInZoneA.add(new Bus(ZONE_A[1], AA2));
4 (commented on others PR)
Are you printing all buses and their specific routes together?
5 (commented on own PR)
Initially, I added a some string functions to edit the getCommand(). However, in hindsight, the string manipulation should not be done in the ui function and I removed them. The UiTest in this case is trivial and not needed! I will close this pull request soon.
6 (commented on own PR)
Edited it! Thank you for spotting that
7 (commented on own PR)
Thank you! I will work on that in my next commit
8 (commented on own PR)
Alright, will update the code accordingly to the most recent pull request by Yuxin.
9 (commented on own PR)
Alright! Removed, sorry bout the oversight.
10 (commented on own PR)
reafFile could throw a filenotfoundexception and that exception has to be dealt with.
We could refactor this into a method in the main function to make it look neater
11 (commented on own PR)
# IDEA files
/.idea/
/out/
/*.iml
# Gradle build files
/.gradle/
/build/
src/main/resources/docs/
# MacOS custom attributes files created by Finder
.DS_Store
*.iml
bin/
/text-ui-test/ACTUAL.txt
text-ui-test/EXPECTED-UNIX.TXT
logger.log
12 (commented on own PR)
logger.log.lck
*.log.*
logger.log.1
/logger.log.2
/logger.log.3
/logger.log.4
/logger.log.5
/logger.log.6
/logger.log.7
/logger.log.8
logger.log.1.lck
logger.log.2.lck
13 (commented on own PR)
*.log.*
logger.log.1
/logger.log.2
/logger.log.3
/logger.log.4
/logger.log.5
/logger.log.6
/logger.log.7
/logger.log.8
logger.log.1.lck
logger.log.2.lck
14 (commented on own PR)
Dine options also include BTC campus?
15 (commented on own PR)
Alright will change all mentions of Kent Ridge Campus to NUS Campus
16 (commented on own PR)
logger.log
logger.log.lck
*.log.*
logger.log.1
logger.log.2
17 (commented on own PR)
18 (commented on own PR)
/logger.log.2
/logger.log.3
/logger.log.4
/logger.log.5
/logger.log.6
/logger.log.7
/logger.log.8
logger.log.1.lck
logger.log.2.lck
19 (commented on own PR)
data/FavList.txt
META-INF/MANIFEST.MF
src/main/java/META-INF/MANIFEST.MF
20 (commented on own PR)
6. Your screen should show the start screen of Nav@NUS as seen in the figure below.<br>
21 (other comment)
Looks good to merge to me!
22 (other comment)
Looks good to merge!
23 (other comment)
LGTM
24 (other comment)
Issue addressed! #78
@dorianfong98 (3 comments)1 (commented on others PR)
Good description.
2 (commented on others PR)
Perhaps it's time for a new ASCII name art? 😃
3 (commented on others PR)
nice catch
4 (commented on own PR)
Yep, just following the ToC for addressbook since their user proifle and value prop is both under product scope and only product scope is in ToC
5 (commented on own PR)
sounds good
6 (commented on own PR)
Yes because the main README is outside the directory of the tp folder hence it can't be accessed via gh pages, i've tried.
7 (commented on own PR)
apparently not
8 (commented on own PR)
ok
9 (commented on own PR)
done
10 (other comment)
LGTM
11 (other comment)
Update: completed JUnit Testing for BinaryTree
12 (other comment)
Agreed. This is a non-issue.
@AndreWongZH (3 comments)1 (commented on others PR)
Making the ArrayList static seems unnecessary. Maybe consider private ArrayList>Event> tests = new ArrayList>>();
2 (commented on others PR)
This method can be an instance method. Being static seems unnecessary.
3 (commented on others PR)
Maybe add spaces in between the arguments.
@nat-ho (3 comments)1 (commented on others PR)
Nice catch!
2 (commented on others PR)
Isn't the list manager initialized before the load command is called in main?
3 (commented on others PR)
Ah okay, initialize is called again when an error has occurred during updating in the even the data was written halfway
4 (commented on own PR)
That's a good suggestion. I have updated the code to reflect the changes. Now the printing of quotes will be done with the TextUI class!
5 (commented on own PR)
Got it updated to the PR!
6 (other comment)
Tutorial testing
7 (other comment)
Looks good as a start!
8 (other comment)
Looks good!
9 (other comment)
LGTM!
10 (other comment)
LGTM!
11 (other comment)
LGTM
12 (other comment)
There was some conflicts with the quotesify logs. Resolved it and merged!
13 (other comment)
LGTM
14 (other comment)
LGTM!
15 (other comment)
LGTM!
16 (other comment)
LGTM! Thanks for adding the launch and shutdown 👍
17 (other comment)
LGTM
18 (other comment)
LGTM
19 (other comment)
LGTM
20 (other comment)
LGTM
21 (other comment)
LGTM
22 (other comment)
LGTM
23 (other comment)
LGTM
24 (other comment)
LGTM
25 (other comment)
LGTM
26 (other comment)
LGTM
@tobiasceg (3 comments)1 (commented on others PR)
Add a constant FORMAT
2 (commented on others PR)
Looks good to me, once merged I will add this into the parser
3 (commented on others PR)
Is it possible to also add a EditTaskCommand format like ur EditModuleCommand
4 (commented on own PR)
i dont think i can abstract this switch statement due to the fact that it returns different methods based on the command_word_****? Any advice?
5 (other comment)
Looks good to me, no issues.
Can merge
6 (other comment)
could u add, a AddCommand.FORMAT
a constant that outputs the correct format on how a addcommand will be read
7 (other comment)
looks good, thank you for solving the bug that affects me
8 (other comment)
looks good to me, once 1 or 2 more ppl look thru n approve i think can merge
i updated my textui last night also, with regards to the printing of the list
9 (other comment)
got it, fixed help command in my latest PR .
The edit command is fixed with wang qins latest PR
10 (other comment)
solved with PR df04fbc6f689c65c0dea794eeb336d41ebcd15f3, merged
11 (other comment)
Please add the diagrams into the DG and explain with reference to the diagrams
RESOLVED ALREADY THANK YOU
12 (other comment)
accidentally closed PR
13 (other comment)
Please fix failing tests before merging
PLS re-review thanks
@yeapcl (2 comments)1 (commented on others PR)
Please consider using switch-case. Otherwise, the last one should be a single else-statement. (https://se-education.org/guides/conventions/java/basic.html#layout)
2 (commented on others PR)
can you probably extract the method out? Quite a number of duplications.
3 (other comment)
Hi Manuel and Wei Siong, I think we should define a Timetable Class and use it to create ArrayList>Timetable>. Also, it fails CI test. Can you push some changes to debug to code that cause CI to fail? Thanks.
4 (other comment)
So that I can quit the application in a manner expected by the developer. (e.g. correctly save all my class timetables in a text file)
5 (other comment)
Feature implemented
6 (other comment)
Feature fulfilled.
7 (other comment)
Feature fulfilled.
8 (other comment)
Feature fulfilled.
9 (other comment)
PR did not pass CI, please review your code again
10 (other comment)
Reopened because the bug is still not resolved.
11 (other comment)
User stories realised.
12 (other comment)
Feature achieved.
13 (other comment)
Fixed via #109
@yuqiaoluolong (2 comments)1 (commented on others PR)
Good and completed assertion statements.
2 (commented on others PR)
Current commit LGTM.
3 (commented on own PR)
OK.
4 (commented on own PR)
Ok, I fixed them in v0.6
5 (commented on own PR)
Ok, I added the case where the activity level is high. I did not do so cause the paper only give suggestions for 4 activity levels.
6 (commented on own PR)
Ok, thanks for reminder.
7 (other comment)
The build tests are failing because of the dependency of the code on the Food class. Have you tested the code locally?
Possible workabouts:
- Consider moving changes to a branch that targets snowbanana12345's Food class.
- Otherwise, consider implementing a minimal Food class which we could also remove when merge conflicts arise later.
I copied and pasted the Food class into seedu.calculator package and added the JUnit test.
@WangZixin67 (2 comments)1 (commented on others PR)
I think just use the try part below is enough. Because when it equals "", it also throws NumberFormatException.
2 (commented on others PR)
The same when it is null
3 (commented on own PR)
Sorry, I commented out for testing some exceptions. Forgot to recover it.
4 (other comment)
Overall is good. Could we separate testParser into 5 parts? The method seems a little bit long.
5 (other comment)
Although I follow the step to enable assertion, I don't know why assertion is still not enabled.
6 (other comment)
fixed
7 (other comment)
fixed
8 (other comment)
fixed
9 (other comment)
fixed
10 (other comment)
Prof and admin are roles of members. We will specify it in the UG.
@e0406981 (2 comments)1 (commented on others PR)
i think the flow of the 1st addmod diagram is great and easy to understand
2 (commented on others PR)
2nd addmod diagram is clean and easy to understand as well, as compared to diagrams in 4.5 & 4.6, which tend to be a little bit more cluttered
@chocomango (2 comments)1 (commented on others PR)
There will be another class that runs the code so that we can lessen the code in Project class
2 (commented on others PR)
Agreed, we can remove the static keyword to allow each instances of the class to have their own variables. Just to better prepare for our v2.
3 (commented on own PR)
Updated this issue.
4 (commented on own PR)
Sure. I did a simple update on parser to facilitate this.
5 (commented on own PR)
This is just a temporary change before @homingjun make a permanent change to parser.
6 (commented on own PR)
ArrayList should be totally removed from parser.
7 (other comment)
good to merge
8 (other comment)
Good job, looks good for now. We can further break the individual command actions into classes and inherit from the parentCommand.
E.g. addMemberCommand inherit from MemberCommand
9 (other comment)
Yup sounds good, we should standardise. I also suggest we can have data package to hold all the data classes like Project, Sprint, Task.
10 (other comment)
simply to put all data classes in one package, but this is all in development, we can change when we integrate later
11 (other comment)
I don't understand what you mean by all classes in a file. Maybe we can discuss it during our meeting tonight.
12 (other comment)
Sprint object to store tasks allocated to sprint from project backlog, with start and end date.
13 (other comment)
Looks good. We can further standardise where we catch exceptions after we revamp our v1.0.
14 (other comment)
I have merged the try-catch block and removed the duplicate function from the classes.
Have you tried enabling the assertions? Link
I enabled it from settings, and also ran someone's test code which show the thing is enabled. But then like if I run "project /view" from the start it still exits with error even though got assert, then I can only fix it with try-catch block. Also if I replace the "no project" errors from try-catch to assertion then the error message prints but the task is still added. I'm not sure if this is normal behavior. Maybe assertions cannot replace try-catch?
The error was because there is no check whether there is a project before executing ViewProjectCommand. The error has already been fixed by @gmit22 in his latest PR.
15 (other comment)
Looks good. The bug seems to be fixed.
16 (other comment)
I have merged his PR, so you can do a pull on the repo and see if the error persist.
17 (other comment)
Apart from updating all the existing SprintCommands, I have changed the ProjectManager to use Hashtable to facilitate the deletion feature of projects in the future.
18 (other comment)
I have changed the command to allocate task from /assign to /allocate so that I can match the /deallocate command
19 (other comment)
Will update the user guide soon
20 (other comment)
Removing of sprint is deemed inefficient as it will produce gaps in the Sprint Manager. The user will be able to fulfil the same purpose by reallocating/removing the task and editing the Sprint goal if necessary.
@n3wsoldier (2 comments)1 (commented on others PR)
I think for command, private will be the better access modifiers, as there will not be any subclass to AddWorkspaceCommand.
2 (commented on others PR)
I think for command, private will be the better access modifiers, as there will not be any subclass to SearchCommand.
3 (commented on own PR)
Yea I saw, but I was considering keeping my custom messages and logging.
I think I will take up your advice to keep things consistent.
4 (commented on own PR)
Thanks for the feedback.
5 (commented on own PR)
I understand the rationale with PARAMETER_NAME but I am consistent with the rest of our teammates,
6 (other comment)
I understand your concerns regarding the conflict of the naming convention of AnimeList class and the array list object in the watchlist. I will take up your suggestion and rectify it to "AnimeData" to represent Animes from our offline data.
@longngng (2 comments)1 (commented on others PR)
Totally agree!
2 (commented on others PR)
Will it be a bug if the user inputs find [EMPTY_STRING] ?
3 (commented on own PR)
Good suggestion!
4 (commented on own PR)
Sure, will add.
5 (commented on own PR)
This part I'm not sure. Could you explain how are we going to invoke the methods in this class?
6 (commented on own PR)
But the list() function needs the object as well, like listNotebooks_nsp(Notebook sampleNotebook), so I'm not sure how to code it. Also, should the List class handle input arguments like "nsp"? That doesn't seem follow the principle right?
7 (commented on own PR)
Sure!
8 (commented on own PR)
Sounds good
9 (commented on own PR)
Okay, will do
10 (commented on own PR)
I'm not sure. What do others think?
11 (other comment)
Looks good to me.
12 (other comment)
Good job! How about we implement only one help function for v1.0 first?
13 (other comment)
The changes look fine.
14 (other comment)
Close #17
15 (other comment)
I feel like we should highlight the commands only.
For example, in this pic, I think can change Timetable, task, deadline to another mark-up style, like italic.
Other than that, it looks good.
Sorry this was from Francene's commit haha.
@matthewgani (2 comments)1 (commented on others PR)
Agreed! Would make things more readable/understandable
2 (commented on others PR)
nice use of assertion here!
@Cao-Zeyu (1 comments)1 (commented on others PR)
Noted. We will work on this later.
2 (commented on own PR)
Oh I didn't see this comment just now before I merge PR. I will change it later.
3 (other comment)
Add the function of listing by category
Update User Guide
Update complete help message for listing and deleting, and update EXPECTED.txt
@prachi2023 (1 comments)1 (commented on others PR)
This line may not be necessary since you return in the next line. But other than that looks good to me
results.add (FILE_WRITE_UNSUCCESFUL_MESSAGE);
2 (commented on own PR)
Alright, will change that before merging
3 (commented on own PR)
Thanks. Have changed it
4 (commented on own PR)
Instantiated by the parser function?
5 (commented on own PR)
Oh I added it bc otherwise, when I use the add command function, it asks for the user input for the content of the note. So when loading the files I dont want to ask for the user input, therefore check if a content file exists (aka are we loading the data) and accordingly see where to get the content from
6 (commented on own PR)
It creates an error
7 (commented on own PR)
Alright thanks will update
8 (commented on own PR)
I tried but Attribute.COLOUR_TEXT().toString() isn't a constant. So it kept giving an error
9 (commented on own PR)
Ah alright ok will fix that thanks!
10 (commented on own PR)
Yup Ive added a check for it
11 (other comment)
Can I close this, since we are using the add parser to add it?
12 (other comment)
#41
@t170815518 (1 comments)1 (commented on others PR)
Maybe we can separate the events and deadlines in toString of TaskList
2 (other comment)
I merge this
3 (other comment)
A possible implementation can be to let the user add the holiday period e.g. 2020-9-30 first, and the display function will only display tasks without lesson if the queried date falls between the holiday period.
4 (other comment)
Reminder: we can edit things only when it is necessary (e.g. tedious to delete and create a new one)
@wangqinNick (1 comments)1 (commented on others PR)
I think it should contain two module list, (or maps)
One module map is for storing the loaded module map from the NUSMODS
The other one is for storing the modules added by user.
2 (commented on own PR)
ok
3 (commented on own PR)
done
4 (commented on own PR)
done
5 (commented on own PR)
I deleted the exception throw. it is handled inside the func already
6 (other comment)
Seems like there's a lot of changes made... Can we get a more detailed description?
For Command part, I only added the editModuleCommand
For ModuleManager part, I only added a function to change the module code of the target module.
For Parser part, I only added a regex to match for editModuleCommand, and a prepareEditModuleCommand() to deal with user inputs
In the end, I added some Junit tests since it is the only way to test.
PS: I edited your Module class and added a module description attribute
7 (other comment)
Looks quite good. If it passes the checks, then can merge.
8 (other comment)
simple changes, can merge
I found the edit -m CS1231 CS3224 the CS3224 cannot be recognised.
9 (other comment)
Just saw it. I will look into the issue tonight.
10 (other comment)
It seems the parser cannot parse the "del -m CS1231" command
@k-walter (1 comments)1 (commented on others PR)
Good flow! Perhaps storage should be accessible only by ItemList, since storage should only be changed when ItemList changes.
@Colin386 (1 comments)1 (commented on others PR)
Would you like to shift this command outside the while loop? will the reminder command keep reminding for every other command we write?
2 (other comment)
I think its good. I like that you check for the date formats before running your code
3 (other comment)
There are no exceptions to implement for Goal
4 (other comment)
Excellent, I think the code runs very well. Most of the exceptions have been dealt with.
5 (other comment)
So far I thnk the code is good, I can see that there is a change from storing date time status structures to using entire clonable events instead. I think this will be helpful later down the line when we need to sort stuff as now to access the repeated events, they have a similar structure
6 (other comment)
Overall I think the code on the whole is good. I can see that it will filter out all events that fall on the day the program is run. I noticed that the remind command is in the while loop. I was wondering if the intention is to get the reminder to keep reminding the user everytime another command is run.
7 (other comment)
Overall I think the code looks good.
8 (other comment)
I think the overall code looks good. I will try on my end to see if I can assist with the storage formatting. I will also see if I can reduce the number of nested if statements on my end as well
@brandontoh (1 comments)1 (commented on others PR)
hmm isn't that his own functions and not the old Duke functions?
2 (commented on own PR)
It would be best if you could add that as well
3 (commented on own PR)
Yea we will be moving the printing stuff the Ui.Printer class. For now, these are for testing
4 (commented on own PR)
hmm, I think you're right
@EdmundEXE (1 comments)1 (commented on others PR)
there should be a @params here i think
@BenardoTang (1 comments)1 (commented on others PR)
Not sure but I think need to include the 'done' command also for test case
2 (other comment)
wow excellent out of this world! thanks for the help!
3 (other comment)
thanks boss
4 (other comment)
Can u add the add review feature in UG/DG? not sure how it works. thanks
5 (other comment)
On it boss
6 (other comment)
Thanks bro
7 (other comment)
should i include examples for one input commands (help,list,bye)?
the help list is already very long so not sure if i should cut down the unnecessary examples
8 (other comment)
For episode and season command, can we include a catch to make sure correct number of episodes input?
For now, i can move the episode number to 100 even tho i set the show to have only 10 episodes (same for season)
9 (other comment)
Still many many many formatting issues but looks ok to me for the most part.
feel free to change whatever errors u notice god bless
10 (other comment)
Nice work! The issue/bug also happens for season too, could i trouble u to implement the same for season?
11 (other comment)
Nice!
12 (other comment)
I think its okay to leave the time left today to be negative if the user overshot his watch time. I included a line inside (Your watch time deficit will be highlighted below 😦 ) To let the user know why there is a negative number.
@Bryanbeh1998 (1 comments)1 (commented on others PR)
Just assume they know. Dont set default uh
2 (other comment)
Very solid!
3 (other comment)
On it
4 (other comment)
I added into the printing list already
@chewyang (1 comments)1 (commented on others PR)
Hi i think it would be better to merge the Activity class with the ActivityList class that i created, ie change the relevant Integer type in the activityList class to Activity class
@KennethEer (1 comments)1 (commented on others PR)
I think the moduleCode should not be set as final for future extendibility, so in case if the user has already typed in the expected and actual time for a module, and after that the user realises the module code is wrong, the user can edit the module code if the module code is not final, but still retain the expected and actual time.
2 (commented on own PR)
The default Object.equals() method takes in the object of Object type as the parameter and I keep this method signature to overwrite the default method.
3 (commented on own PR)
Yes, the function name is renamed to checkIfModuleExist.
4 (other comment)
Closes #37
5 (other comment)
Closed in #43 deleteMod function
6 (other comment)
Closed in #43 addMod function
7 (other comment)
Closed in #43 deleteExp function
8 (other comment)
Closed in #43 addExp function
@CFZeon (1 comments)1 (commented on others PR)
Agreed, but I think that it would be better after all the functions are up after the first iteration.
2 (commented on own PR)
will do
3 (other comment)
LGTM!
4 (other comment)
Looks good!
5 (other comment)
lgtm!
@yuen-sihao (1 comments)1 (commented on others PR)
Is the chinese because of some settings? 😃
2 (commented on own PR)
Yeah, didn't notice it. Should have used information.equals("") since information is String. Thanks for spotting 😃
@JohnNub (1 comments)1 (commented on others PR)
Not sure why this is commented out
2 (commented on own PR)
Great suggestion. I pushed a new update to implement the change you suggested.
3 (other comment)
e a /n CS2113T Tutorial /d next fri /t 2pm
Hi john! thank you
I will like to clarify, for the above example, is there any library that i have to add to recognize "next Friday" or its just if else statements?
Look at Event.java in https://github.com/AY2021S1-CS2113T-F14-1/tp/pull/52/files it was implemented in the last PR.
4 (other comment)
Having multiple, shorter alternatives to the long command form is part of the Shorthand Command productivity & efficiency feature set and is considered intentional.
Closed, not a bug.
5 (other comment)
This is done to allow users to read the output instead of being teleported several pages down not knowing where they last were.
We will accept this bug and increase the speed to make it significantly faster.
@hungvo0603 (1 comments)1 (commented on others PR)
Hi Yuxuan should line 25 be "String[] splitInput = word[1].split("d\");" instead of "d\\"? We only use one backslash symbol.
2 (other comment)
Fixes #123
3 (other comment)
Fixed #143
4 (other comment)
Fixes #269
@marcursor (1 comments)1 (commented on others PR)
Maybe can use constants to prevent magic numbers
2 (commented on own PR)
Ok thanks for the feedback!
3 (other comment)
Using \r in JUnit test only works for Windows. To make test platform independent try using StringWriter and PrintWriter.
maybe can try using System.lineSeparator() for line breaks?
4 (other comment)
Nice use of lineSeparator for cross-platform compatibility
5 (other comment)
すばらしです
6 (other comment)
Appropriate use of assert, good job
7 (other comment)
Closes #114
8 (other comment)
Resolved
@Reinbowl (1 comments)1 (commented on others PR)
You can check this in the parse method to avoid surrounding your code with this large try catch.
2 (other comment)
Since goal extends event, goal command and goal class requires changes as well. In short a goal cant be repeated.
3 (other comment)
Do not merge yet. Once reviewed to delete old classes not used by repeat anymore.
4 (other comment)
I'll update Ui prints methods for this commands, from printing the divider line twice.
5 (other comment)
Could change the tick and crosses to "Y" and "N" or maybe simple print "done" and "not done". Resolve by updating toString method of events.
6 (other comment)
The issue here is when viewing a repeat of an event that is not repeated. The command tries to retrieve repeatlist and print it but repeatlist is null. Easily resolve to print "event does not repeat" when repeatlist is null.
7 (other comment)
Same as issue #207
8 (other comment)
Same as issue #213
9 (other comment)
To check whether listing repeat of events is properly functioning. For some reason appear to be getting a null repeatlist.
@jerroldlam (1 comments)1 (commented on others PR)
Can remove this commented out line
2 (other comment)
Hashmap has been updating.
3 (other comment)
Resolved with addition of academic planner.
4 (other comment)
Resolved with addition of CAP Calculator app.
5 (other comment)
Update test for addModuleToUser
6 (other comment)
Fixed for other inputs with similar situation as well
7 (other comment)
Completed
8 (other comment)
Example when i manually edit the files
9 (other comment)
Implemented with view by semester function in academic calendar
10 (other comment)
Implemented with set SU in CAP Calculator
11 (other comment)
Implemented with storage classes, which supporting saving and loading.
12 (other comment)
Testing coverage completed satisfactorily
13 (other comment)
Edit message to show target MC cannot be 0 or less
14 (other comment)
This can happen if your academic calendar has modules and grades and if those modules do not have a cumulative GPA of 5 in the first place.
For eg, if in the first semester I scored a GPA of 4.8, even if i score CAP 5 for the remaining 7 semesters, my CAP will never be 5.0.
Please advise on the academic plan you have entered prior to this CAP Calculator set target command,
Thanks @LiewWS
15 (other comment)
Checking of pre-requisites and co-requisites is a feature slated for the future. PlanNUS is still in its early stages and we will be increasing its functionality as the development cycle goes.
16 (other comment)
As stated in the user guide, users should just enter acadplan. Refer to the command summary of our user guide for more info.
17 (other comment)
Thank you for your kind suggestion. This will be taken into consideration for future iterations
18 (other comment)
This will be looked into in the future to see how we can best increase the data integrity of the database we currently have.
19 (other comment)
duplicated with #215
20 (other comment)
Folder containing logs will be implemented in future iterations
21 (other comment)
Update messages to show which parameter was wrong
22 (other comment)
duplicated with #218
23 (other comment)
duplicated with #186
24 (other comment)
Hi @LiewWS thank you very much for this report! We will look into it! Appreciate the follow up!
@weishuangtan (1 comments)1 (commented on others PR)
Can consider refactoring to reduce arrowhead coding
2 (commented on own PR)
I removed it so that if it detects eg "buys" which contains "buy", it will print an error message and an example on how they can use the [buy] command, what do you all think?
3 (commented on own PR)
Added in cases for error handling, thanks!
@lunzard (1 comments)1 (commented on others PR)
Good work. I think information as a parameter of this method is redundant as it can be accessed across the Class DeleteCommand though
2 (commented on own PR)
I think the question mark is caused by my default language of the system (CHINESE), i will look for ways to fix that
3 (commented on own PR)
thanks for the suggestion!
@amalinasani (1 comments)1 (commented on others PR)
Perhaps can add "streamlines information for easy viewing and management"?
@xieyaoyue (1 comments)1 (commented on others PR)
Since validSummaryMonth, summaryYear and summary throw no exception, you can move them outside the try block.
2 (other comment)
Fixes #18, #10, #8
3 (other comment)
Fixes #74 #73
4 (other comment)
As a user ready to start using the app, I can purge all current data, so that I can get rid of sample/experimental data I used for exploring the app.
@snowbanana12345 (0 comments)1 (other comment)
#84
2 (other comment)
implement save load for Personal information , the class can be easily modified to include more fields
3 (other comment)
implemented method to convert data base output to String
@GuoAi (0 comments)1 (commented on own PR)
Ya. Maybe we can have this command as "list tasks sorted" while keeping the original "list" command as unchanged?
2 (other comment)
Format category INDEX c/CATEGORY (e.g. category 1 c/academics)
3 (other comment)
Or maybe we can just have one big constructor ListCommand, i.e. ListCommand(int priority, String category, boolean isSorted) and pass these arguments in CommandCreator?
@acyang97 (0 comments)1 (other comment)
I decided that Lesson will be a sub class of Task. Lesson objects are special in the sense that they have a frequency. For now, I only considered the case where the Lessons are held weekly. Biweekly Lessons might be harder to implement, will think through again. Adding the Lesson class and enabling it to be added to the ScheduleManager and ModuleManager was the main bulk of what I tried to implement.
I still haven't changed the Deadline and Event classes to suit our TP code, which means as of now, Deadline and Event objects cannot be added to the ScheduleManager and ModuleManager yet. I also haven't added Junit tests and update the UserGuide.
2 (other comment)
At the bottom of ModuleManager, should put all sorts of task under it - Lesson, Deadlines and Events.
At the bottom of ScheduleManager, should just put in the Deadlines - should put down deadlines today and future as well. Will think of how to implement this and update later
3 (other comment)
@t170815518 probably will just remove this and stick to your add module method to add a module.
4 (other comment)
Should we enforce users to add a module to the module manager first before allowing them to add a task?
5 (other comment)
@t170815518 I'm just going to remove my add module feature but take a look at yours to see if there is this issue too
6 (other comment)
Will just remove this implementation
7 (other comment)
@t170815518 again i will remove this implementation but check if your implementation have the same issue
8 (other comment)
I removed this feature cause I realised when clashes are allowed into the timetable, the storage function will be quite weird too when loading the tasks when the app is starting
9 (other comment)
resolved by adding another line to inform user to enter a valid time
10 (other comment)
tested out again and didnt face this issue though...
11 (other comment)
changed already
12 (other comment)
added a new exception to handle invalid date format dates
13 (other comment)
added the bye feature at the bottom
14 (other comment)
settled the minor documentation error
15 (other comment)
dk what he talking about the 25 mins, but handled the error of an invalid LocalTime.
16 (other comment)
solved and also handled case of empty description for event and lesson as well
17 (other comment)
Handled the error by handling incorrect dates
18 (other comment)
updated user guide to make it clearer
19 (other comment)
Handled by removing this feature and just not allow user to add tasks when there are clashes
20 (other comment)
will need to make UG clearer that it will only be added in dates when there is school
21 (other comment)
tested out and seems like its already been handled though
@tikimonarch (0 comments)1 (commented on own PR)
Understandable but the reason for all is because all command is used so there would be like 11 import statements if i am specific? what do you think?
@scjx123 (0 comments)1 (other comment)
Add read courselist feature
2 (other comment)
Associate this issue with milestone 1
label : priority high + task
author : Rafael & Chu han
Description: recommend to split this into 2 different smaller issue as per UG. eg.
Ability to focus on todo
Ability to focus on deadline
3 (other comment)
please specify the issue.
4 (other comment)
note that if you added duplicated task, it will not be added to the list.
5 (other comment)
Here you go, i redownloaded it
1 2 is NOT referring to the task name itself. if you look at our UG, you would see that it is actually an indices. meaning, if u type list, and you see
eat food
deadline meeting (by: Dec 12 2020 19:40)
u can proceed to use this command to add the task 1 AND 2 into both module CS2113 and CS2113T
@zongxian-ctrl (0 comments)1 (other comment)
Fixes #14
@leonlowzd (0 comments)1 (other comment)
test succeed, will close PR now.
2 (other comment)
test is done:)
3 (other comment)
Nicely done! Some methods are quite long though, maybe we can break it down further?
4 (other comment)
To state in UG that turning off program will switch off all appliances and explicitly mention it in exitmessage
5 (other comment)
To do check in LocationList as well.
6 (other comment)
KIV
7 (other comment)
KIV
8 (other comment)
change to "toilet does not have any appliances"
9 (other comment)
minor bug
10 (other comment)
Appliance was remained on when p_reset was called
11 (other comment)
mention in UG & exit message
12 (other comment)
"hundred" is a string
13 (other comment)
Update UG for better clarity
14 (other comment)
Change printout message to be more explicit
15 (other comment)
UG stated must be unique name, program works as intended
16 (other comment)
KIV
17 (other comment)
KIV
18 (other comment)
KIV
@johanesrafael (0 comments)1 (other comment)
needs to resolve conflict . Otherwise, it can not be merged.
2 (other comment)
Going to merge it...
3 (other comment)
Splitted into smaller issues
4 (other comment)
please check with gradle again
checkstyleTest and checkstyleMain
5 (other comment)
We found a bug in Delete Action. delete action can not delete when focus action is also executed. No errors, however. Just nothing is changed
6 (other comment)
branch -v1.0 has issue. it can't run main(). shows errors traced back to showText() in cli
7 (other comment)
Will implement on-off reminder function!
@kaijiel24 (0 comments)1 (other comment)
Update #19
Added non-mode-specific printPrompt to be used in command execution
2 (other comment)
#48 done
3 (other comment)
Approval granted.
@Ang-Cheng-Jun (0 comments)1 (other comment)
Here you go, i redownloaded it
2 (other comment)
Your UG is too hard to understand. Maybe you should make it clearly
3 (other comment)
Btw, i have ask prof. He ask me to do on fallback team already. So i cant create an issue on it.
4 (other comment)
Good Work ! I will continue from here to do the JUnitTest on removing location.
5 (other comment)
Thanks Leon, solved the issue !
6 (other comment)
Delete Pull Request
7 (other comment)
Thanks for the feedback. Most of the code is repeated one. I will place them in a private function in the class
8 (other comment)
Looks good !
@fanceso (0 comments)1 (other comment)
nice done
@TomLBZ (0 comments)1 (other comment)
needs to resolve conflict . Otherwise, it can not be merged.
My "Resolve conflicts" button is still greyed out...
2 (other comment)
this is done alr
3 (other comment)
No longer need a selection region. Use Focus instead. Closing this with my PR.
4 (other comment)
Back function is no longer needed. Just use focus. Closing this with my PR.
5 (other comment)
I intend to do it like:
edit [-type] [index] [field=newvalue] ...
for example:
edit -task 1 description=blahblahblah date=blabhblh
edit -mod 5 MC=4
Pre-requisites: the target item must be selected. If it is not selected, it will be automatically selected.
Related: Need to implement "unselect" and "untake". Planning to use base actions.
6 (other comment)
Also, the edit should be able to change tasks for a module:
edit -mod 5 updateTask
will set the task of module 5 to be tasks currently in the selected list.
If nothing is selected, this will clear the task for module 5.
7 (other comment)
Once Completed, the module can no longer be Taken or Untaken or Completed or Graded or Edited again, but it can still be Selected and be Found.
8 (other comment)
Once Completed, the module ceases to count in the current MC, but still counts in overall CAP calculation and overall MC.
9 (other comment)
Once completed, module should be immediately untaken.
10 (other comment)
Only taken modules can be completed
11 (other comment)
Hi.
It is expected behavior. Because you do not yet have tasks with indixes 1 and 2.
Try this:
todo myTask1
deadline myDeadline 1 /by 10 10 2020
list
you will be able to see the task list with indices.
Then you will be able to use “add” command to add tasks with indices to the modules.
Best Regards
Bozhao
Sent from Mail>https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10
From: Aldo Maximillan>mailto:notifications@github.com>
Sent: Friday, October 30, 2020 4:46 PM
To: AY2021S1-CS2113-T13-2/tp>mailto:tp@noreply.github.com>
Cc: Subscribed>mailto:subscribed@noreply.github.com>
Subject: [AY2021S1-CS2113-T13-2/tp] Unable to add to the list (#219)
[Screenshot 2020-10-30 at 4 14 18 PM]>https://user-images.githubusercontent.com/60168552/97678773-531e9e00-1acf-11eb-93f1-4ff576f28751.png>
Hi, I am trying to use your application, I followed how to use the add command, but I cannot use it
―
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub>https://github.com/AY2021S1-CS2113-T13-2/tp/issues/219>, or unsubscribe>https://github.com/notifications/unsubscribe-auth/AGNEEMKOUGEPD7WZ3JZHKMLSNJ4P5ANCNFSM4TEWVYAA>.
12 (other comment)
>img alt="Screenshot 2020-10-30 at 4 14 18 PM" width="1440" src="https://user-images.githubusercontent.com/60168552/97678773-531e9e00-1acf-11eb-93f1-4ff576f28751.png">
Hi, I am trying to use your application, I followed how to use the add command, but I cannot use it
Should you need any further clarification please do not hesitate to keep commenting on this thread.
13 (other comment)
>img alt="Screenshot 2020-10-30 at 4 14 18 PM" width="1440" src="https://user-images.githubusercontent.com/60168552/97678773-531e9e00-1acf-11eb-93f1-4ff576f28751.png">
Hi, I am trying to use your application, I followed how to use the add command, but I cannot use it
In short, you need to create tasks before trying to add tasks to modules. The program works as expected in showing "NOT FOUND" when no specified task can be found, and showing "index out of range" when your specified index is indeed out of range. Those are expected error handling behaviors.
14 (other comment)
I used the exact same command as the example, still cannot add
Hi. Would you mid providing a screenshot?
Firstly, you must indeed have tasks before you can try to add tasks to modules, otherwise of course the program need to show an error message.
Try this:
todo testTask1
todo testTask2
todo testTask3
list
Then you should be able to see that you have some tasks in the task list.
then, you can add the specified tasks to specified modules:
add -task 1 2 -mod EE2026
Should you need further clarifications, please do not hesitate to respond to this thread. Thanks!
15 (other comment)
I think it is a little bit counter-intuitive because the user do not have any specific instruction in the UG or in the help page on how to add new tasks. Your add command makes it more confusing for the user to add the tasks.
Thank you for your valuable feedback. Please report this unintuitive documentation on CATcher as a Documentation Bug. We will improve the UG in the future based on your advice. (this shows that we have not written the UG truly from a user prospective, and we will consider adding a short "usage example" session before the feature list in the next version of UG) Thanks!
16 (other comment)
Here you go, i redownloaded it
This is working perfectly fine as expected... because for your newly downloaded jar there is ZERO TASK created, and the index 1 and 2 are SURELY out of range.
You can try reading my previous reply.
For your convenience I am going to paste it here:
''''
Firstly, you must indeed have tasks before you can try to add tasks to modules, otherwise of course the program need to show an error message.
Try this:
todo testTask1
todo testTask2
todo testTask3
list
Then you should be able to see that you have some tasks in the task list.
then, you can add the specified tasks to specified modules:
add -task 1 2 -mod EE2026
Should you need further clarifications, please do not hesitate to respond to this thread. Thanks!
'''
17 (other comment)
Here you go, i redownloaded it
In other words, this is a High Severity Documentation Bug (as Prof says), because our documentation is unclear. Please report this, thanks
18 (other comment)
1 2 is NOT referring to the task name itself. if you look at our UG, you would see that it is actually an indices. meaning, if u type list, and you see
- eat food
- deadline meeting (by: Dec 12 2020 19:40)
u can proceed to use this command to add the task 1 AND 2 into both module CS2113 and CS2113T
Yes you are right. that's why its showing "Index out of range" instaed of "[NOT FOUND]".
19 (other comment)
Your UG is too hard to understand. Maybe you should make it clearly
Yes indeed, our UG is not clear. Please report it as a High Severity Documentation Bug.
20 (other comment)
Btw, i have ask prof. He ask me to do on fallback team already. So i cant create an issue on it.
It is OK, we can improve the UG to make it clearer based on your valuable feedback in this issue. Thanks! Your comments really made us understand more from the user's perspective!
@zhixiangteoh (0 comments)1 (commented on own PR)
Oh this one the idea is to make a stack of questions in jumbled order - that's why first shuffle then make a stack out of it. So it's like pre-determined order, but to the user it will be "random". Implementation-wise, it's just popping off the topmost question from the "jumbled" stack. Idk if this answers your question?
2 (commented on own PR)
^ sounds good! I think in checkAttempt() method excluding {Punc} probably already catches "", if not then we can just add that to the regex to ignore. Great idea!
3 (commented on own PR)
Oh yea definitely. I wrote this before I finalised the runGameLoop. Thanks for the great catch!
4 (commented on own PR)
^ Just checked, can confirm {Punct} regex includes "". Will add this to FAQ portion of UG!
5 (commented on own PR)
I misunderstood this question! I have since fixed the issue. Thanks!
6 (other comment)
Ignore failed text tests here; I modified Main to test Deck Commands.
7 (other comment)
A more elaborate 'game mode' will be focused on in v2, although minimal functionality for viewing flash cards will be implemented in v1.
8 (other comment)
Discussed as a team and decided not to throw exceptions within individual Command classes; instead all exception handling will be encapsulated in Normal and Deck Parser.
9 (other comment)
Suspect tests failed due to "\n" in Windows
10 (other comment)
Push to v2.0.
11 (other comment)
Game Mode:
Q: "What if my flashcard answer contains a single word 'done' or 'exit'?"
A: Escape the command using \exit or "exit".
Edit: Credit @LiewWS
12 (other comment)
Push to v2.1
13 (other comment)
Thanks for your input! Anywhere section is for generic commands that have same effect regardless of user's location within application. help commands are unique and distinct across different modes, which explains the decision to place it within each mode, rather than within the "Anywhere" section.
14 (other comment)
https://ay2021s1-cs2113-t14-2.github.io/tp/UserGuide.html#guide-format
@Feudalord (0 comments)1 (other comment)
Done
2 (other comment)
Settled. Seperated exception handling and more detailed error message.
3 (other comment)
fixed
4 (other comment)
fixed
@trolommonm (0 comments)1 (other comment)
#14
2 (other comment)
#14
3 (other comment)
#31
4 (other comment)
#48
@TanJunHong (0 comments)1 (other comment)
Looks good to merge!
2 (other comment)
All checks passed, LGTM
3 (other comment)
Checks failed. Minor edits required.
@yokemin (0 comments)1 (other comment)
completed with #16
2 (other comment)
LGTM.
3 (other comment)
close #35
@Louis-Feng (0 comments)1 (other comment)
update
@JunxianAng (0 comments)1 (other comment)
close #36
2 (other comment)
close #36
@ychong032 (0 comments)1 (other comment)
Very good!
@zsk612 (0 comments)1 (commented on own PR)
not sure whether commLib will be more convenient or not if we only have "diet", "workout", "profile" and "exit" commands which don't really execute many things. Maybe a simple switch case would be clearer?
2 (other comment)
Reviewed code, good job.
3 (other comment)
Fixed list command in DietSession.
4 (other comment)
Fixed add command in DietSession.
5 (other comment)
Fixed delete command in DietSession.
6 (other comment)
Fixed list command in DietManager.
7 (other comment)
Fixed create command in DietManager.
8 (other comment)
Fixed exit command in main
9 (other comment)
Fixed exit command in DietSession.
10 (other comment)
Fix start workout session.
11 (other comment)
Fix end workout session
12 (other comment)
Fix remove workout session
13 (other comment)
Fix save diet session
14 (other comment)
Fix add workout moves
15 (other comment)
Fix list workout session
16 (other comment)
Fix delete dietSession
17 (other comment)
Add javadoc and loggings for diet
update help for diet
add diet storage and main menu in DG
18 (other comment)
hahahah
@michaeldinata (0 comments)1 (commented on own PR)
The logger has been updated for all the classes that I could find it in. Thanks for pointing it out!
2 (commented on own PR)
Done! Thanks for the heads-up! 👍
@judowha (0 comments)1 (other comment)
good job
2 (other comment)
Just to explain the new changes for edit commands :
getRawEpisodesForSeasons() used instead of getEpisodesForSeasons() -> this one checks array using season-1 so it'll lead to bounds errors
- If numSeason increases:
- set a new array for episodes and init the new seasons with 1 episode
- if numSeasons decreases:
- replace episodes with smaller sized array and delete the episodes in the later seasons
- initially episodes=[10,12] for 2 seasons, when resized to 1, episodes=[10]
Understand! But we need to ensure that users give a valid input. e.g. they change the number of seasons to 0. If we assume the user input is perfect, then it will work well.
3 (other comment)
a search function has been implemented
4 (other comment)
done already
5 (other comment)
I think its okay to leave the time left today to be negative if the user overshot his watch time. I included a line inside (Your watch time deficit will be highlighted below 😦 ) To let the user know why there is a negative number.
emmmmm, that makes sense. Then we just leave it. Thanks, Benardo!
@JiawenLyu (0 comments)1 (other comment)
Good to merge.
2 (other comment)
Good to merge.
3 (other comment)
Looks good.
4 (other comment)
Looks good.
@Zhu-Ze-Yu (0 comments)1 (commented on own PR)
you mean the Storage storage?
2 (other comment)
Fixes #31
Fixes #32
3 (other comment)
Fixes #51
Fixes #52
4 (other comment)
Fixes #43
5 (other comment)
Fixes #42
6 (other comment)
Save edited chapter name and module name
Combine GoChapterCommand and GoModuleCommand
Combine BackChapterCommand and BackModuleCommand
7 (other comment)
Fixes #74
@Zhangyilin0203 (0 comments)1 (other comment)
looks good
2 (other comment)
looks good to merge
3 (other comment)
looks good
@PraveenElango (0 comments)1 (commented on own PR)
Thank you for pointing out!
2 (commented on own PR)
Thank you for pointing out!
3 (commented on own PR)
Thank you for pointing out!
4 (commented on own PR)
Got it, thanks for pointing out Wira!
5 (commented on own PR)
I was not able to access them in the test files where I was trying to reference them. Changing from private to protected solved that problem.
6 (commented on own PR)
Oops, my bad! I'll use the pow function instead
7 (commented on own PR)
Sure, that sounds good.
8 (commented on own PR)
Got it, will rename accordingly!
9 (commented on own PR)
Right, I'll figure that out. Thanks Wira 😃
10 (commented on own PR)
Agreed, will change.
11 (commented on own PR)
Oh, but aren't we testing the getter functions inside the templates and not the components?
12 (commented on own PR)
Okay good point - I didn't consider that. I modified the declaration as per IntelliJ's suggestion because if I remember correctly, it flagged a warning (but not an error).
But like @hughjazzman pointed out, they will still work when we declare them as final right?
13 (commented on own PR)
Right, will remove and push again. Thanks for pointing out!
14 (commented on own PR)
Sure, will remove it.
15 (commented on own PR)
Sure, will remove it.
16 (commented on own PR)
IntelliJ suggested it to me and I tried downloading it to experiment around, but I don't think it does anything particularly useful. I'll remove it now.
17 (commented on own PR)
Sure, will change it to SPACES.
18 (commented on own PR)
Sure, will remove it.
19 (commented on own PR)
Sure, will remove it.
20 (commented on own PR)
Sure, will remove it.
21 (commented on own PR)
My bad 😦
22 (commented on own PR)
Must have been by accident, I'll remove it now
23 (commented on own PR)
Okay
24 (commented on own PR)
Okay but it is already SetBooleanCommand.png right?
25 (commented on own PR)
Sure, will do.
26 (commented on own PR)
Ah, sorry for the confusion. I changed it to SetBooleanCommand.png already but didn't push it yet.
27 (commented on own PR)
Okay sure
28 (other comment)
@hughjazzman Got it, thanks for the help!
@homingjun (0 comments)1 (commented on own PR)
Ok that makes sense
2 (other comment)
The code looks good to merge.
3 (other comment)
There's some conflicting files that needs to be fixed.
4 (other comment)
Looks good to merge
5 (other comment)
Looks good to merge.
@Khenus (0 comments)1 (other comment)
The most fail-safe method is to create the map with the actual index of each module inside the full module list after loading. This causes an efficiency of o(n) but allows for the most robust map creation as the index in the map will always correspond to the index in the array list.
2 (other comment)
Thank you for the suggestion, we will look into this feature.
3 (other comment)
Thank you for the suggestion @Jingming517. We designed PlanNUS as a platform that provides its user with all the information needed to make the best decision. Due to this, we decided not to implement a limit for users when it comes to suggesting which modules they should SU as more information is often better in this situation. Nonetheless, we appreciate the suggestion and will look into it for future iterations of PlanNUS.
@harryleecp (0 comments)1 (other comment)
jar file link has been amended
@slightlyharp (0 comments)1 (other comment)
LGTM
2 (other comment)
LGTM
@yujinyang1998 (0 comments)1 (commented on own PR)
oh yeah I forgot to do this function
2 (commented on own PR)
will do
3 (commented on own PR)
good call
4 (commented on own PR)
good call
5 (commented on own PR)
great idea
6 (commented on own PR)
@zsk612 @CFZeon
7 (commented on own PR)
will do
8 (commented on own PR)
Good idea
9 (commented on own PR)
will do
10 (commented on own PR)
Great catch
11 (commented on own PR)
My calls are all static tho, so printer has to be static
12 (commented on own PR)
Oh I didnt see that, thanks
13 (commented on own PR)
great catch!
14 (commented on own PR)
damn I missed alot of stuff lol
15 (other comment)
do a gradle build test on ur own system before you do pr
16 (other comment)
Looks good
17 (other comment)
Lgtm
@Darticune (0 comments)1 (commented on own PR)
@neojiaern can be used in conjunction with my computeNewDeadline functions for revision implementation
2 (commented on own PR)
@neojiaern simplified comparing of date to: if dueBy is before or equals to todays date. Function can be used to reference for revision in card version.
3 (commented on own PR)
I cannot, because ui.showToUser enforces newline after printing string. I will use format string in the next iteration.
4 (commented on own PR)
I cannot, because ui.showToUser enforces newline after printing string. I will use format string in the next iteration.
5 (commented on own PR)
I cannot, because ui.showToUser enforces newline after printing string. I will use format string in the next iteration.
@TYS0n1 (0 comments)1 (other comment)
Dropped functionality
2 (other comment)
Merged
3 (other comment)
Merged
4 (other comment)
Failed text-ui-test, fix later merges
5 (other comment)
Need to explain "current time" and "lesson now" indicators in UG
6 (other comment)
Could you take a look at this xing rong?
7 (other comment)
UG for planner mode
8 (other comment)
Either add a warning in UG or change input code format?
9 (other comment)
Add warning in UG to follow the format.
10 (other comment)
Already working as intended of moving code to the top of screen. User prob has a large monitor screen so not enough text input to completely clear screen. ZH opinions?
11 (other comment)
I dont think screenshots are possible for these
12 (other comment)
trim?
13 (other comment)
Add warning in UG to read the command format before the features.
show monday views monday as a module declaration not a day declaration hence the error.
help is not a valid module in NUS so it errors.
Add warning in UG about appropriate MODULE names. BOLD and HIGHLIGHT so users can see
14 (other comment)
Add to UG limitations to the app?
15 (other comment)
same as issue #167
16 (other comment)
same as #159
17 (other comment)
Index error
18 (other comment)
same as another issue
19 (other comment)
Change wording of Quick Start to "You should see something similar to this Zoomaster logo indicating that you have successfully started your Zoomaster program."
20 (other comment)
Do you guys want to sort?
21 (other comment)
As per UG "The chaining of commands only performs on one module which is {MODULE}."
Add bold comment around ONE MODULE to highlight to users
22 (other comment)
same error
23 (other comment)
same error
24 (other comment)
same error
25 (other comment)
make UG more reader friendly
@tengkianen (0 comments)1 (other comment)
Naming error resulting in failing Gradle checks
2 (other comment)
UI updated by other teammates
@oasisbeatle (0 comments)1 (commented on own PR)
Should I remove the previously created LoadComponentTest class and split it into the respective component test subclasses?
2 (commented on own PR)
Yes, that's a good idea
3 (commented on own PR)
Noted, thanks!
4 (commented on own PR)
Yeah it looked redundant to me as well, will make the edits after we append the code.
5 (commented on own PR)
Noted!
6 (commented on own PR)
Updated it to cover the current implementation
7 (commented on own PR)
I'm not sure about this bit. Maybe we could remove it later.
8 (commented on own PR)
My point here is that if we did choose a linked list structure then we would have no templates so we just add the components directly to the linked list. Of course, we could block users from adding certain components by checking the components present in the linked list. For some reason, I feel like a linked list interpretation would have worked. Any specific reason why it wouldn't be able to simulate a circuit system?
9 (other comment)
Please let me know how if the way I've done LoadComponentTest so far makes sense, if it does I will extend it to cover all components
10 (other comment)
LGTM!
edit: After merge conflicts have been resolved
11 (other comment)
LBGTM! (Looks blissfully good to merge)
12 (other comment)
LGTM!
13 (other comment)
Need a review on the latest version
14 (other comment)
Update
@sevenseasofbri to do CalculateBooleanCommandTest
@oasisbeatle to do AddBooleanCommandTest
@hughjazzman to do SetBooleanCommandTest
@lhydl (0 comments)1 (commented on own PR)
I declare outside because it is used in more than one methods.
2 (commented on own PR)
I think it is better to implement exception handling inside the respective methods. But I believe this method works for now to prevent the app from crashing first due to some weird inputs.
3 (commented on own PR)
Is there a better alternative? I used the above method as using "\u2713" and "\u2718" violates the Gradle style check.
4 (commented on own PR)
Yeah, can.
5 (other comment)
List week number, modules, expected workload and actual workload in a table.
Change the welcome screen to show a graphic of ModTracker.
6 (other comment)
Looks good to merge.
7 (other comment)
The word "valid" is defined in the preceding "notes" sub-section under the "features" section.
@xuche123 (0 comments)1 (other comment)
Currently 3 types of sorting implemented which are:
Sort by location
Sort by time
Sort by description
2 (other comment)
Fixes #51
@gohsonghan98 (0 comments)1 (other comment)
I think you may also consider saving and loading user configuration as txt file in your storage class.
2 (other comment)
Already implemented
@syncode98 (0 comments)1 (commented on own PR)
Noted
2 (other comment)
Completed @jialerk
3 (other comment)
Approved the merging of this pull request after looking through the code.
4 (other comment)
Successfully implemented the required features by @sugandha929
@xingrong123 (0 comments)1 (other comment)
This is actually not a bug . The level of indentation is intentional but I think the user guide was not clear about what it means. I will update the UG.
2 (other comment)
perhaps be a bit more broader and specify potential causes of why Zoommaster was not able to add the slot to the timetable? I think I will do this instead.
Another way to address this problem is to use keywords in the command is to use keywords but
3 (other comment)
There is a simple fix to this. The previous method used split(" ") to split the words by one space. Instead I should have used split("\\s+"). This will combine all white spaces as a delimiter.
4 (other comment)
i think can use an image or emoji on the UG that attracts the readers attention so that they read the constraints.
@ninggggx99 (0 comments)1 (commented on own PR)
It will not run for every command. I would prefer not to switch it out because there's a try catch
2 (other comment)
Your dateException is failing the test. Maybe try to fix the expected output?
3 (other comment)
Excellent!
4 (other comment)
nicely done! can consider adding in comments next time 😃
5 (other comment)
Well done! 😃
@Jingming517 (0 comments)1 (other comment)
looks good
2 (other comment)
Looks ok.
3 (other comment)
I'll change the expected.txt after deciding the format of timeline.
@johan9se (0 comments)1 (commented on own PR)
Oh yes! Thanks for that reminder, I've changed it accordingly!
2 (commented on own PR)
But isn't Ui being passed into the execute method of all Command classes?
3 (other comment)
Closed by pull request #118
@Lee-Juntong (0 comments)1 (other comment)
syntax inferred:
edit index
the new event is entered with the same syntax as adding a new event.e.g. 'assignment xxx /t 2020-10-01 20:00 /l somewhere
2 (other comment)
in a later version, we shall allow the user to edit only one part of the event. i.e. only time or location or type or description
3 (other comment)
make sure you can pass CI. There is no bug in CI now.
4 (other comment)
coding style check failed
5 (other comment)
solved
6 (other comment)
solved
7 (other comment)
solved
8 (other comment)
solved
9 (other comment)
Improved
10 (other comment)
the format is invalid in this case because 53:40 is an invalid time.
But nonetheless, I have updated the error message in this case.
11 (other comment)
Similar to the other issue raised by this guy. Improved in the same way.
12 (other comment)
solved
@AmeliaTYR (0 comments)1 (other comment)
closing duplicate issue
2 (other comment)
closing duplicate issue
@yeyutong811 (0 comments)1 (other comment)
Ok!
2 (other comment)
Achieved in Branch hr ver0.1
3 (other comment)
JUnit
4 (other comment)
close # 22
@Varsha3006 (0 comments)1 (other comment)
so that I will not forget or miss the event.
2 (other comment)
so that I can manage the schedule
3 (other comment)
so that I prevent myself from doing repetitive things
4 (other comment)
so that I can get information on events quickly
5 (other comment)
So that i will be reminded of the number of dats left
6 (other comment)
Fixed it!
@elizabethcwt (0 comments)1 (other comment)
Already implemented in PR to fix #103
2 (other comment)
Fixed by #120
3 (other comment)
Fixed by pull request #210
4 (other comment)
Re-open issue when applicable for v2.1
@AliciaHo (0 comments)1 (other comment)
Fixes #69
@jlifah (0 comments)1 (other comment)
hello
2 (other comment)
looks
3 (other comment)
overall well done just that there is minor coding style errors
i feel very attacked 😦
4 (other comment)
dk why the commit for addSet not showing here but its here: https://github.com/AY2021S1-CS2113T-T09-4/tp/commit/6d3bcb6d912b28042a904fd78c4f5b31fbfcfbdf
@pinfang (0 comments)1 (commented on own PR)
since the xxx.execute() method throws an exception, summaryYear.excecute() should be in the try block to catch exception if there is any
@LIU-YiFeng-1 (0 comments)1 (other comment)
Looks good to merge.
2 (other comment)
Fix printEventsCommand and checkstyles Closes#36
3 (other comment)
Fix printEventsCommand and checkstyles Closes#36
4 (other comment)
Closes #38
5 (other comment)
already fixed. please ignore this issue.
6 (other comment)
Same issue, already fixed in PR #233.
7 (other comment)
Only available modules in NUS are allowed to be added! We will make it more clear in the UG. Thanks!
8 (other comment)
Thanks for pointing out! The same issue appeared and already fixed in PR #233.
9 (other comment)
Thanks for pointing out. Already fixed in PR #231
10 (other comment)
Just a suggestion maybe, add an indicator to show that there is additional information available.
11 (other comment)
Fixed in PR #231
12 (other comment)
Thanks for pointing out! Already fixed in PR #233
13 (other comment)
Thanks for pointing out! Already fixed in PR #231
@max-wunan (0 comments)1 (other comment)
added logo pictures and cover page for both user guide and developer guide
@jialerk (0 comments)1 (other comment)
closes #48
closes #28
2 (other comment)
Added user guide details
@e0426051 (0 comments)1 (commented on own PR)
ok I removed the file.
Is the scrumptious package name ok though
2 (commented on own PR)
ok. I merge? Or someone merge after checking or sth?
3 (other comment)
good
4 (other comment)
sounds ok imo
5 (other comment)
Labels added and getTask() has been implemented for all applicable functions
6 (other comment)
This PR is deprecated. Task function will use Gunit's implementation.
7 (other comment)
Looks ok. I can just copy paste my part in after merging
8 (other comment)
Looks good
9 (other comment)
Looks good.
10 (other comment)
I have merged the try-catch block and removed the duplicate function from the classes.
Have you tried enabling the assertions? Link
I enabled it from settings, and also ran someone's test code which show the thing is enabled. But then like if I run "project /view" from the start it still exits with error even though got assert, then I can only fix it with try-catch block. Also if I replace the "no project" errors from try-catch to assertion then the error message prints but the task is still added. I'm not sure if this is normal behavior. Maybe assertions cannot replace try-catch?
11 (other comment)
I have merged the try-catch block and removed the duplicate function from the classes.
Have you tried enabling the assertions? Link
I enabled it from settings, and also ran someone's test code which show the thing is enabled. But then like if I run "project /view" from the start it still exits with error even though got assert, then I can only fix it with try-catch block. Also if I replace the "no project" errors from try-catch to assertion then the error message prints but the task is still added. I'm not sure if this is normal behavior. Maybe assertions cannot replace try-catch?
The error was because there is no check whether there is a project before executing ViewProjectCommand. The error has already been fixed by @gmit22 in his latest PR.
Just checked again, the code is working as expected now.
You are talking about the Unit Test assertions is it? Those assertions are different from the normal assertions. Normal assertions are placed in the code using the
assertkeyword, therefore the link I have provided only works for normal assertions. Anyway both have different purpose, so yeah.
I think the problem is I did not pull Gunit's latest code. Now everything looks good.
I made more changes regarding some commands without dashes, so maybe can review one more time before merge.
12 (other comment)
The basic functionalities are essentially complete(+added removal of corresponding retrospective if a sprint is deleted)
The operations for saving and parsing the sprint retrospective classes are missing in
Projectclass. Without them, the data will always be lost after the program exits.
Thanks for the suggestion.
I have tried to implement the saving of the list into the project class, but now it will cause nullpointerexception when launching scrumptious with the presence of data.json. Any idea what issue this might be? I feel that my tojson and fromjson is very similar if not identical to the ones used in the sprint classes.
Edit: Gradle fail due to failed test classes as a result of nullpointerexception
@imhm (0 comments)1 (other comment)
sub task of #19
2 (other comment)
Closes #18
3 (other comment)
lgtm
4 (other comment)
Closes #85
5 (other comment)
Closes #152
@Speedweener (0 comments)1 (other comment)
Added in Colour and Checkstyle changes pull request
2 (other comment)
huh but then i think its obvious that the lesson now surrounds the second session 1600 to 1800?
3 (other comment)
heheh this is just printing the clear ecscape sequence, nothing i can do about it heheh. I think it serves its intended purpose of clearing the visible screen for the user though im not sure how his input bar shifted to the right
@poonchuanan (0 comments)1 (other comment)
Looks good!
thank you